更新时间:2024-05-21 13:46
初始化器,是数学名词。·
Time(int a,int b)
:x1(a),x2(b) //初始化x1 x2 调用的是(可能是复制,要看a的类型是否与x1相同)构造函数 这样初始化在Time的对象构造完成之前
{
x1=a; //这样的方式 Time的对象已经构造起来了
x2=b;
}
引用:“如int a(3);和int a=3;一样都是将a初始化为3.我觉得int a(3);应该调用的int类的复制构造函数。”
可以这么理解 但实际上内部类型是没有这些构造函数的。C++为了方便让它们支持这样的操作
如果x1,x2和a,b的类型一样,是不是调用的复制构造函数。那不一样的时候是如何调用的呢。
你说内部类型没有复制构造函数。那他是怎么实现int a(3)的呢。
int和其他类型不能被看做和自定义类一样的类吗!还是他们比较特殊。
像自定义一样 都调用(默认)复制构造函数
自定义类不显示定义复制构造函数时,系统会自动生成一个默认的复制构造函数
int的类型你也可以这么理解
#include
using namespace std;
class B
{
int n;
public:
B(int _n=0)
{
n=_n;
}
B(B& o)
{
}
};
class A
{
B obj1;
B obj2;
public:
A(): obj2(B(2)), obj1(B(1)) //列表与变量声明的顺序无关
{
}
A(A& o)
{
}
};
int main()
{
A obj;
A obj1(obj); //调用复制构造函数 与 int a(3)比较
A obj2 = obj; //调用复制构造函数 与 int a=3 比较
obj1 = obj2; //调用赋值函数 与 a=3 比较
return 0;