现在的位置: 首页 > 综合 > 正文

C++ FAQ学习笔记 9,10章

2017年12月18日 ⁄ 综合 ⁄ 共 1271字 ⁄ 字号 评论关闭
文章目录

[9.9] 在定义于类外部的内联函数中,以下哪种方法最好:是把inline关键字放在类内部的成员函数声明前呢,还是放到类外部函数的定义前呢,还是两个地方都写?

最佳实践是:仅放在类外部函数的定义前。而且习惯放在头文件中

class Foo {
 public:
   void method();  
 best practice: don't put the inline keyword here
   
...
 };

 inline void Foo::method()   best practice: put the inline keyword here
 { ... }



tips:定义在类中的方法一般默认为inline方法,编译器可以自己做决定。另外虚继承之类的方法一般不用inline.


http://stackoverflow.com/questions/145838/benefits-of-inline-functions-in-c

http://stackoverflow.com/questions/1759300/when-should-i-write-the-keyword-inline-for-a-function-method/1759575#1759575

http://stackoverflow.com/questions/60830/what-is-wrong-with-using-inline-functions

http://stackoverflow.com/questions/86561/inlining-c-code


[10.3] 如何才能够使一个构造函数直接地调用另一个构造函数?

不行。

注意:如果你调用了另一个构造函数,编译器将初始化一个临时局部对象;而不是初始化this对象。你可以通过一个默认参数或在一个私有成员函数 init() 中共享它们的公共代码来使两个构造函数结合起来。

[10.4] Fred 类的默认构造函数总是Fred::Fred()吗?

不。“默认构造函数”是能够被无参数调用的构造函数。因此,一个不带参数的构造函数当然是默认构造函数

然而,如果参数被提供了默认值,那么带参数的默认构造函数也是可能的:

[10.6] 构造函数应该用“初始化列表”还是“赋值”?

初始化列表效率更高。

[10.7] 可以在构造函数中使用 this 指针吗?

[10.9] 为何不能在构造函数的初始化列表中初始化静态成员数据?

[10.12] 如何防止“static initialization order fiasco”?

使用“首次使用时构造(construct on first use)”法,意思就是简单地将静态对象包裹于函数内部。

[10.13] 对于静态数据成员,如何防止“static initialization order fiasco”

[10.13] 对于静态数据成员,如何防止“static initialization order fiasco”?

如上两者类似

返回引用,返回指针的概念(vendor add),赋值构造函数,拷贝构造函数

抱歉!评论已关闭.