n00*_*00b 0 c++ initialization-list
我有这段代码
class Osoba{
Osoba(char* imie,int wiek){
this->imie=new char[strlen(imie)+1];
strcpy(this->imie,imie);
this->wiek=wiek;
cout<<"Utworzono Osobe "<<this->imie<<endl;
}
Osoba(Osoba& x){
Osoba(x.imie,x.wiek);
}
[...]
Run Code Online (Sandbox Code Playgroud)
当我调用复制构造函数时,它不起作用(创建和销毁对象).
编辑:如果我使用
Osoba(Osoba& x): Osoba(x.imie,x.wiek){
Run Code Online (Sandbox Code Playgroud)
我明白了 type 'class Osoba' is not a direct base of 'Osoba'
怎么做的?
小智 10
你不能这样调用构造函数.嗯,你可以,但会发生什么是无名的临时对象被创建.编写复制构造函数而不引用其他构造函数.此外,如果使用std :: string而不是char*,则不需要复制构造函数.如果你坚持使用char*,你还需要一个析构函数和赋值运算符.