//第一个和第二个调用场景
#include<iostream>
using namespace std;
class test
{
public:
test()
{
m_a=0;
m_b=0;
cout<<"无参构造函数"<<endl;
}
test(int a)
{
m_a=a;
m_b=0;
}
test(int a,int b)
{
m_a=a;
m_b=b;
}
test(const test& obj)
{
cout<<"我也是构造函数"<<endl;
//如果没有下列两行代码,那么编译出来的并不是我们想要的m_a,m_b;
m_b=obj.m_b+100;
m_a=obj.m_a+100 ;
}
public:
void print()
{
cout<<"普通成员函数"<<endl;
cout<<"m_a"<<m_a<<" "<<"m_b"<<m_b<<endl;
}
private:
int m_a;
int m_b;
};
//赋值构造函数:用一个对象去初始化另外一个对象
int main01()
{
test t1(1,2);
test t0(1,2) ;
t0=t1;//用t1给t0赋值操作和初始化是两个不同的概念
//第一种调用时机
test t2=t1;//用t1来初始化t2;
t2.print ();
cout<<"hello"<<endl;
return 0;
}
//第二种调用时机
int main02()
{
test t1(1,2);
test t0(1,2) ;
test t2(t1);//也是完成了用t1对象初始化t2对象;
t2.print();
cout<<"hello"<<endl;
return 0;
}
赋值构造函数(copy构造函数)调用时机(四种)的前两种调用场景
最新推荐文章于 2023-03-11 10:24:23 发布