new如果我已经有对象的内存,我可以显式调用构造函数而不使用吗?
class Object1{
char *str;
public:
Object1(char*str1){
str=strdup(str1);
puts("ctor");
puts(str);
}
~Object1(){
puts("dtor");
puts(str);
free(str);
}
};
Object1 ooo[2] = {
Object1("I'm the first object"), Object1("I'm the 2nd")
};
do_smth_useful(ooo);
ooo[0].~Object1(); // call destructor
ooo[0].Object1("I'm the 3rd object in place of first"); // ???? - reuse memory
Run Code Online (Sandbox Code Playgroud) 我对构造函数链的理解是,当一个类中有多个构造函数(重载的构造函数)时,如果其中一个构造函数试图调用另一个构造函数,那么这个过程称为CONSTRUCTOR CHAINING,这在C++中是不受支持的.最近我在阅读在线资料时遇到了这一段......就像这样......
您可能会发现自己处于要编写成员函数以将类重新初始化为默认值的情况.因为您可能已经有一个构造函数来执行此操作,您可能会尝试从您的成员函数中调用构造函数.如前所述,链接构造函数调用在C++中是非法的.您可以从函数中的构造函数中复制代码,这将起作用,但会导致重复的代码.在这种情况下,最好的解决方案是将代码从构造函数移动到新函数,并让构造函数调用您的函数来完成初始化数据的工作.
调用构造函数的成员函数是否也在构造函数链接下?请在C++中详细介绍这个主题.