- 用一个已有的对象初始化新对象时:
#include <iostream>
class MyClass {
public:
int data;
MyClass(int num) : data(num) {}
MyClass(const MyClass& other) : data(other.data) {
std::cout << "拷贝构造函数被调用" << std::endl;
}
};
int main() {
MyClass obj1(10);
MyClass obj2 = obj1;
return 0;
}
- 函数参数为类对象值传递时:
#include <iostream>
class MyClass {
public:
int data;
MyClass(int num) : data(num) {}
MyClass(const MyClass& other) : data(other.data) {
std::cout << "拷贝构造函数被调用" << std::endl;
}
};
void func(MyClass obj) {
std::cout << "函数内部,data: " << obj.data << std::endl;
}
int main() {
MyClass obj(10);
func(obj);
return 0;
}
- 函数返回值为类对象时:
#include <iostream>
class MyClass {
public:
int data;
MyClass(int num) : data(num) {}
MyClass(const MyClass& other) : data(other.data) {
std::cout << "拷贝构造函数被调用" << std::endl;
}
};
MyClass func() {
MyClass temp(10);
return temp;
}
int main() {
MyClass result = func();
return 0;
}