C++深度解析 对象的构造(中)对象定义和声明,构造函数的重载(17)
对象的构造由构造函数完成
函数名与类名相同,并且不能有任何返回值。
带有参数的构造函数
意义:可以使得每个对象有不同的初始化状态。
一个类中可以存在多个重载的构造函数。
构造函数的重载遵循C++重载的规则。
对象定义和对象声明不同
对象定义:申请对象的空间并调用构造函数
对象声明:告诉编译器存在这样一个对象
Test t; //定义对象并调用构造函数
int main()
{
//告诉编译器存在名为t的Test对象
extern Test t;
return 0;
}
分析:通过链接时找到对象定义的地方。编译过程:预处理,编译器出厂(对源代码进行语法检查,生成目标文件),链接器出厂。
定义对象时,构造函数的自动调用。构造函数可以重载
实例程序:(带参数的构造函数)
#include <stdio.h>
class Test
{
public:
Test()
{
printf("Test() \n");
}
Test(int v)
{
printf("Test(int v), v = %d\n", v);
}
};
int main()
{
Test t; //调用 Test()
Test t1(1); //调用 Test(int v)
Test t2 = 2; //调用 Test(int v),使用2初始化t2
//int i;//初始化,i的初始值是随机的
//i = 1;//赋值,不是初始化
//初始化和赋值不同,初始化是会调用构造函数,赋值则不会
//t = t2;//赋值操作
//初始化和赋值是不同的
int i(100);
printf("i = %d\n", i);
return 0;
}
结果如下:
分析:Test t2 2;用2初始化t2。