首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++的构造函数跟析构函数可以是内联的吗

2014-01-12 
C++的构造函数和析构函数可以是内联的吗?C++的构造函数和析构函数可以是内联的吗?[解决办法]可以,在类定义

C++的构造函数和析构函数可以是内联的吗?
C++的构造函数和析构函数可以是内联的吗?
[解决办法]
可以,在类定义里实现就是内联
[解决办法]
可以倒是可以,但看起来没啥好处。
但是 inline 关键字只是给编译器的建议,生成的时候未必真内联代码。

所谓内联应该用在非常小并且调用比较频繁的情况下,用来提高效率。因为没有压栈出栈操作。如果函数大,内联的话,每一个调用的地方展开会让代码节增大的厉害(不过编译器一般会自己根据情况选择,编译器甚至可以根据调用的地方的总数和函数大小来动态分析是否内联)。
再说,内联本身对效率的提升对于一个比较大的程序是微不足道的。不如你自己在循环方面啊,算法方面啊,稍事优化对效率提升效果大。
[解决办法]
构造函数本身就是内联,不信你在它前面家关键字virtual,编译器就会提醒你这是一个inline
[解决办法]
只要是类的成员函数,都可以放在类内定义,在类内定义的函数,编译器一般视作内联。但是,这种写法与我们追求的类的定义和实现相分离的目标背道而驰,所以不建议将类的函数实现写在类的内部。
[解决办法]
可以内联, 不过虚析构还是不要内联了.

[解决办法]
可以inline,但编译器很可能不进行inline, 即使你写了个空的构造函数,这个函数被处理这之后也未必是空的,编译器会在此构造函数中填写有一些内容,所有的基类的初始化,成员变量也要在此初始化如string。你写了空的构造函数,但也许这个构造函数会很大。析构同理。
[解决办法]
当然可以内联
[解决办法]

引用:
构造函数本身就是内联,不信你在它前面家关键字virtual,编译器就会提醒你这是一个inline


构造函数可以virtual??
[解决办法]
引用:
可以倒是可以,但看起来没啥好处。
但是 inline 关键字只是给编译器的建议,生成的时候未必真内联代码。

所谓内联应该用在非常小并且调用比较频繁的情况下,用来提高效率。因为没有压栈出栈操作。如果函数大,内联的话,每一个调用的地方展开会让代码节增大的厉害(不过编译器一般会自己根据情况选择,编译器甚至可以根据调用的地方的总数和函数大小来动态分析是否内联)。
再说,内联本身对效率的提升对于一……

++说的很详细了!
[解决办法]
当你不写构造函数和析构函数的时候,编译器为你生成的这两个函数都是内联的。

热点排行