C++深度解析 对象的构造(中)对象定义和声明,构造函数的重载(17)

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。

猜你喜欢

转载自blog.csdn.net/xiaodingqq/article/details/85220325