Table of Contents
问题1:能不能在构造函数中调用其他构造函数
C++03 不能。
C++11 能。(初始化列表)
例子:
1 | class B int main() B B2; B B3(1.2); } |
其中,上面程序用C++03编译不通过,提示没有相应基类(7行)。
用C++11编译通过,运行结果是:
5
9.88131e-324
3
也就是在C++11中可以通过这种方式在初始化列表中使用其他构造函数。
注意
不管是不是C++11,在构造函数体中调用其他构造函数都相当于构建了一个临时对象,对本身没有任何影响。
问题2:在类外,能不能显式调用构造函数。
只能够通过placement new。
A *pa = (A *)malloc(sizeof(A)); pa = new (pa) A; pa->~A(); free(pa); |
问题3:能否显式调用析构函数
能,如上。
问题4:为什么能够显式调用析构函数而不能够显式调用构造函数
不知道