临时对象
#include <iostream>
#include <cstring>
#include <cstring>
using namespace std;
class Bar {
public:
Bar(const char* _name) {
cout << "ctor" << endl;
strcpy(name, _name);
}
Bar(const Bar& other) {
cout << "cp ctor" << endl;
strcpy(name, other.name);
}
virtual ~Bar() {
cout << "dtor" << endl;
}
public:
Bar(const char* _name) {
cout << "ctor" << endl;
strcpy(name, _name);
}
Bar(const Bar& other) {
cout << "cp ctor" << endl;
strcpy(name, other.name);
}
virtual ~Bar() {
cout << "dtor" << endl;
}
const char* getName() const{
return name;
}
return name;
}
void setName(const char* _name) {
strcpy(name, _name);
}
char name[256];
};
strcpy(name, _name);
}
char name[256];
};
Bar foo() {
return Bar("bar");
}
return Bar("bar");
}
int main() {
Bar bar(foo());
cout << foo().getName() << endl;
return 0;
}
Bar bar(foo());
cout << foo().getName() << endl;
return 0;
}
在VC和GCC中都没有调用过 copy constructor
输出
ctor
ctor
bar
dtor
dtor
ctor
bar
dtor
dtor