C++ 模板和内联

2024-01-09

当我编写一个简单(非模板)类时,如果函数实现“就地”提供,它会自动被视为inline.

class A {
   void InlinedFunction() { int a = 0; }
   // ^^^^ the same as 'inline void InlinedFunction'
}

当谈论基于模板的类时,这条规则怎么样?

template <typename T> class B {
   void DontKnowFunction() { T a = 0; }
   // Will this function be treated as inline when the compiler
   // instantiates the template?
};

另外,情况如何inline应用于非嵌套模板函数的规则,例如

template <typename T> void B::DontKnowFunction() { T a = 0; }

template <typename T> inline void B::DontKnowFunction() { T a = 0; }

第一种和第二种情况会发生什么?

谢谢。


因为当你实例化你得到一个类时,该函数就像一个普通的成员函数。它是在该类中定义的,因此该函数会自动内联。

但在这里这并不那么重要。无论如何,您可以在程序中多次定义函数模板或类模板的成员 - 您不需要inline告诉编译器这一点,就像在非模板情况下一样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 模板和内联 的相关文章

  • “字符串”是什么意思?信息'

    我刚刚在查看定义时发现了这个PlatformNotSupportedException class 什么是string message意思是 据我所知是 是缩写Nullable lt gt but Nullable lt gt 只能应用于结
  • 如果两个线程同时访问同一个 bool 变量会发生什么?

    我有一个跨平台 C 程序 其中使用 boost 库创建异步计时器 我有一个全局变量 bool receivedInput false 一个线程等待并处理输入 string argStr while 1 getline cin argStr
  • 如何通知父线程所有子线程都已终止?

    我有一个控制台应用程序正在移植到 WPF 该应用程序有 3 个工作线程 在将一些输出结果打印到屏幕上之前 这些线程都连接到主线程 我的理解是 如果我尝试在 WPF 应用程序中执行相同的操作 GUI 将被阻止并且不会响应用户 那么如何通知父线
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • WPF Dispatchertimer 延迟反应/冻结

    在我的 WPF 应用程序中 我使用 3 个不同的 DispatcherTimers 一种是用于显示当前时间 一种是每 5 秒运行一次数据库查询 第三个每 1 秒刷新一次自定义按钮的值 当我的程序运行时 有很多延迟 冻结 例如 时间开始正确计
  • NHibernate IQueryable 集合作为 root 的属性

    我有一个根对象 它有一个集合属性 例如 I have a Shelf object that has Books Now public class Shelf public ICollection
  • 如何在Azure功能中添加razor视图文件?

    我正在创建一个应用程序 它是 azure 函数项目 我想在该项目中使用 Razor 视图 我应该在 azure 函数中使用任何模板引擎吗 得益于一些方面的进步剃刀之光项目 https github com toddams RazorLigh
  • ASP.NET中如何访问除wwwroot以外的位置

    我可以使用访问服务器的物理位置Server MapPath 这给了我内部的物理路径wwwroot文件夹 我想将一些数据保存到同一服务器的另一个驱动器中D 驾驶 我想我无法获取以下位置的物理位置D 驾驶使用Server MapPath因为它位
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • C++:LPWSTR 在 cout 中打印为地址

    我有一个类型变量LPTSTR 我打印到std cout with lt lt 在 ANSI 系统中 不知道它是在哪里确定的 它工作得很好 它打印了字符串 现在 在 Unicode 系统中 我得到的是十六进制地址而不是字符串 那么 为什么LP
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • 如何在 Visual Studio 2010 Express 中引用 system.drawing?

    我对此有点陌生 我的印象是要绘制我创建的矩形 我需要使用 system drawing graphics 问题是 我收到错误 命名空间 System 中不存在类型或命名空间名称 drawing 您是否缺少程序集引用 当我右键单击解决方案资源
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • 生成范围 [min,max] 内的随机数 [重复]

    这个问题在这里已经有答案了 我正在使用 C 生成范围 min max 内的整数随机数 我在用 int random int int min int max return min rand max min 但我认为上面的代码适用于范围 min
  • #define 内存地址声明

    这个 define 语句有什么作用 它用于定义内存地址 但我不明白 uint32 t 部分 define GPxDAT uint32 t 0x6FC0 通常用于访问映射到地址空间的硬件寄存器 或者一些特定的内存地址 硬件寄存器应定义为vol
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • C++ 联合数组和变量?

    在C 中没有办法做这样的事情吗 union Scalar x y Scalar v 2 Where x v 0 and y v 1 既然您使用的是 C 而不是 C 并且它们具有相同的类型 为什么不直接将 x 设为对 v 0 的引用 将 y
  • “显式”关键字对返回值优化 (RVO) 有何影响?

    以下代码工作得很好 显示 RVO struct A A int cout lt lt A A n constructor A const A cout lt lt A A const A n copy constructor A foo r
  • 如何使用 Ioc Unity 注入依赖属性

    我有以下课程 public interface IServiceA string MethodA1 public interface IServiceB string MethodB1 public class ServiceA IServ

随机推荐

  • 有没有办法在Python中强制函数参数互斥?

    考虑 def foobar foo bar if foo print foo end if bar print bar end if foo and bar print No bueno end I want this to be impo
  • Lamport同步算法讨论中的“偏序”和“全序”是什么意思?

    我的理解是 部分排序和全排序是两组规则 部分排序有三个规则 1 如果a和b是同一进程中的两个事件 并且a出现在b之前 则a gt b 2 3 那什么是全序呢 为何如此命名 这些名称源于这样一个事实 在部分顺序中 并非所有元素都具有可比性 而
  • Solr 5.1:Solr 创建了太多日志文件

    我正在处理 Solr 5 1 创建太多日志文件的问题 每次 Solr 重新启动时 以及一周定期重新启动时 Solr 都会创建以下文件 我需要它停止 solr gc xxxxxxxx xxxx 类型的文件 其中 x 分别代表日期和某种标识号
  • php中带有多个条件的if语句

    我有多个条件的 if 语句 这两个条件有什么区别 1 if province AB NT NU YT GST 5 else if province BC MB GST 5 PST 7 else if province NB NF ON HS
  • 如何让Mysql数据库支持阿拉伯语?

    我试图将阿拉伯语保存在 mysql 数据库中 但它不以阿拉伯语格式保存 它显示问号而不是阿拉伯语 如何让它用阿拉伯语存储值 我尝试了很多从互联网上看到的查询 但它没有改变 如何将其更改为阿拉伯语 ar SA 阿拉伯语 沙特阿拉伯 请建议一个
  • 如何使用 jQuery 搜索嵌套列表?

    我已经将一个简单的搜索字段放在一起来浏览列表 但我有嵌套列表 并且它仅限于单级列表 如何修改 我把它放在小提琴里 http jsfiddle net marksweb 4CJMe http jsfiddle net marksweb 4CJ
  • 如何将 CakePHP 中的查找限制为特定数量?

    我有一个用户模型 它为我提供最新的用户作为输出 如何限制记录只输出 200 条记录而不是数据库中的所有用户 根据文档 http book cakephp org 2 0 en models retrieving your data html
  • node.js - 如何使用服务工作者缓存handlebars.js

    我想问一下服务人员的情况 我制作了一个网络应用程序并尝试实现服务工作者 我使用 hbs 作为视图布局 当我缓存静态文件时 我无法缓存 hbs css 和 js 文件 这就是我保存文件的方式 public css style css js a
  • 如何从另一个函数返回生成器

    我有一个生成器函数 我想从另一个函数调用它并返回获得的生成器 我在这里可以看到两种方法 请注意 以下函数是简单的虚拟函数 用于说明目的 请不要想出更好的方法来实现这些功能本身 Method 1 def fun a n for i in ra
  • 如何制作热图并使用 NA 值进行聚类?

    我正在尝试使用我的数据制作热图 但很难正确编码 我的矩阵充满了 log x 1 值 这样我就不会遇到 log 0 错误 但是由于数据的性质 我有一堆 0 值 它们掩盖了热图的任何趋势可能正在展示 因此 我想将任何 0 值着色为灰色或黑色 然
  • 所选图像未显示在画布上

    我正在开发一个应用程序 用户可以从提供的图像列表中选择图像 当用户单击列表中的图像时 所选图像应作为背景显示在画布上 我正在使用reactjs redux 和fabricjs 开发它 当我这样做时 我没有得到选定的图像 this props
  • 从 Firebase 数据库异步方法返回值

    我想检查 Firebase 中是否已有具有所选用户名的用户并且我已经创建了一个函数checkUsernameAlreadyTaken username String gt Bool做这个的 这是该函数的代码 func checkUserna
  • 参数超过256字节的CUDA内核调用思路

    我有几个结构 它们的总大小超过了允许在内核调用中作为参数传递的 256 字节大小 这两个结构都已分配并复制到设备全局内存 1 如何在同一个内核中使用这些结构而不将其作为参数传递 更多细节 这些结构可以单独作为参数传递 例如 在不同的内核中
  • 从命令行查看表格文件,例如 CSV [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题似乎不是关于主要由程序员使用的特定编程问题 软件算法或软件工具 help on topic 如果您认为该问题与主题相关另一个 St
  • 异常:oauth 状态丢失或无效。 (ASP.NET Core 外部标识符 OAuth)

    我正在尝试在 Asp Net Core 中实现外部 OAuth https github com aspnet contrib AspNet Security OAuth Providers https github com aspnet
  • 在 iframe 中加载另一个域网站

    我想使用 iframe 在我的网站上加载另一个网站 我在其他一些网站中使用 iframe 加载时遇到了一些其他问题 那么我们不能实现iframe来加载其他域网站页面吗 如果是这样 我们是否有其他方法来加载网站 以下是我测试的方法 我已经尝试
  • 从 Azure DevOps 获取已通过 JavaScript 合并到分支中的所有工作项

    The idea 我目前正在使用 NodeJS 开发一个 发行说明 应用程序 该应用程序调用各种 Azure DevOps REST API 端点来获取基于特定标签的工作项 我现在拥有的 我现在所拥有的工作原理如下 SomeAzure De
  • 将 Github 存储库移植到另一种语言

    我想将别人的存储库移植到另一种语言 就我而言 SCSS gt Stylus 但它很可能是Javascript gt Coffeescript 解决这个问题的最佳方法是什么 我是不是该 分叉存储库并编辑文件 而不是拉取请求 在这里 我只会分叉
  • 在引导程序中,如何使图像成为下拉菜单?

    在引导程序中 如何使图像成为下拉菜单 您好 我在引导程序中创建了一个下拉列表 我想放置一个图像 使其成为单击的项目以查看下拉列表 下面是我的代码
  • C++ 模板和内联

    当我编写一个简单 非模板 类时 如果函数实现 就地 提供 它会自动被视为inline class A void InlinedFunction int a 0 the same as inline void InlinedFunction