初始化器

更新时间: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;

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}