class Fun {
private:
int m_age;
public:
Fun();
Fun(int a);
Fun(const Fun &a);
~Fun();
};
Fun::Fun() {
cout << "默认构造函数调用" << endl;
}
Fun::Fun(int a) {
m_age = a;
cout << "有参构造函数调用" << endl;
}
Fun::Fun(const Fun &a) {
m_age = a.m_age;
cout << "拷贝构造函数调用" << endl;
}
Fun::~Fun() {
cout << "析构函数调用" << endl;
}
使用一个已经创建完毕的对象来初始化一个新对象
void test1() {
Fun f1(10);
Fun f2(f1);
}
int main() {
test1();
return 0;
}
值传递方式给函数参数传值
void copy(Fun f) {
}
void test2() {
Fun f;
copy(f);
}
int main() {
test2();
return 0;
}
值传递会拷贝出临时数据,在copy函数修改值不会影响外部数据,因为copy函数的参数拷贝过来的
值方式返回局部变量
Fun ref() {
Fun f;
cout << &f << endl;
return f;
}
void test3() {
Fun f1 = ref();
Fun &f2 = f1;
cout << &f1 << endl;
cout << &f1 << endl;
cout << &f2 << endl;
cout << &f2 << endl;
}
int main() {
test3();
return 0;
}
这个我就不放运行结果了,因为和老师电脑上运行出来的情况不一样