[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/60830/what-is-wrong-with-using-inline-functions
http://stackoverflow.com/questions/86561/inlining-c-code
最佳实践是:仅放在类外部函数的定义前。而且习惯放在头文件中
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/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),赋值构造函数,拷贝构造函数