29.初始化和赋值的区别

29.初始化和赋值的区别

在C++中,初始化和赋值是两个不同的概念。

  需要注意的是,对于某些类型的变量,初始化和赋值的效果是一样的。例如,对于基本类型的变量,使用等号进行初始化和赋值的效果是一样的。但是对于一些复杂类型的变量,如类对象,初始化和赋值的效果是不同的。在这种情况下,初始化会调用类的构造函数,而赋值会调用类的赋值运算符重载函数。

●简单类型

初始化是在定义变量时给它一个初始值,可以使用等号或者花括号来进行初始化。例如:

int a = 10;//使用等号进行初始化
int b{20};//使用花括号进行初始化

赋值是在变量已经定义并且有了一个值的情况下,给它一个新的值。例如:

int c = 30;//定义并初始化变量c
c = 40;//给变量c赋值为40

●对于类和复杂数据类型来说,这两者的区别就大了,举例如下:

class A
{
public:
    int num1;
    int num2;
public:
    A(int a=0, int b=0):num1(a),num2(b){};
    A(const A& a){};
    //重载 = 号操作符函数
    A& operator=(const A& a)
    {
        num1 = a.num1 + 1;
        num2 = a.num2 + 1;
        return *this;
    };
};

int main()
{
    A a(1,1);
    A a1 = a;//拷贝初始化操作,调用拷贝构造函数
    A b;
    b = a;//赋值操作,对象a中,num1 = 1,num2 = 1;对象b中,num1 = 2,num2 = 2
    return 0;
}

3

posted @ 2023-07-03 21:22  CodeMagicianT  阅读(331)  评论(0编辑  收藏  举报