构造函数与赋值重载函数

默认构造函数、拷贝构造函数和赋值重载函数进行区分:

#include 
class A
{
public:
    A()
    {
        printf("1\n");
    }
    A(A &a)
    {
        printf("2\n");
    }
    A &operator=(const A &a)
    {
        printf("3\n");
        return *this;
    }
};
int main()
{
    A a;     //默认构造函数
    A b = a; //拷贝构造函数
    A c;     //默认构造函数
    c = a;   //赋值重载函数
}

分析:
A a,A c定义一个对象,毫无疑问调用默认构造函数 。

A b = a,这是定义了对象b,且以a对b进行初始化,这个时候需要调用拷贝构造函数。

如果写成A c;c = a;则是调用后面重载的赋值函数。

这样输出结果会是1, 2, 1, 3

运行结果:
在这里插入图片描述

你可能感兴趣的:(开发语言,c语言,c++)