首页 > 其他分享 >29.初始化和赋值的区别

29.初始化和赋值的区别

时间:2023-07-03 21:36:36浏览次数:34  
标签:初始化 num1 num2 int 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;
}

标签:初始化,num1,num2,int,29,变量,赋值
From: https://www.cnblogs.com/codemagiciant/p/17524129.html

相关文章

  • 28.拷贝初始化和直接初始化
    ●当用于类类型对象时,初始化的拷贝形式和直接形式有所不同:直接初始化直接调用与实参匹配的构造函数,拷贝初始化总是调用拷贝构造函数。拷贝初始化首先使用指定构造函数创建一个临时对象,然后用拷贝构造函数将那个临时对象拷贝到正在创建的对象。举例如下stringstr1("Iamastring......
  • Codeforces 293B Distinct Paths
    发现\(n,m\)的数据范围是假的,因为每一步一个颜色最多也就\(k\le10\)种颜色,所以当\(n+m-1>k\)时一定无解。接下来发现这个数据范围挺小的,考虑状压,设\(f_{x,y}\)为走到\((x,y)\)点所用的颜色的集合,其可以由\(f_{x-1,y},f_{x,y-1}\)推来。然后就可以......
  • 冲刺国赛模拟 29
    牛子老师问我为什么\[\lim_{x\to\infty}\sqrt{\frac{x^3}{x-1}}-x=\frac12\]wolframalpha告诉我直接Laurent级数展开发现没有正项。于是你如果加个\(a\)直接泰勒展开事实上会发现是个无穷项。这个东西和拉马努金的那个“所有自然数加和是\(-\dfrac1{12}\)”的结论好......
  • 29. Spring boot 文件上传(多文件上传)【从零开始学Spring Boot】
    文件上传主要分以下几个步骤:(1)新建mavenjavaproject;(2)在pom.xml加入相应依赖;(3)新建一个表单页面(这里使用thymeleaf);(4)编写controller;(5)测试;(6)对上传的文件做一些限制;(7)多文件上传实现(1)新建mavenjavaproject新建一个名称为spring-boot-fileuploadmavenjava项目;(2)在pom.xml......
  • OGG-02912 Patch 17030189 is required on your Oracle mining database for trail fo
    Therewillbeascript"prvtlmpg.plb"undergghomedirectory[oracle@OGGR2-1ogg]$ls-lrtprvtlmpg.plb-rw-r-----1oracleoinstall9487May272015prvtlmpg.plb[oracle@OGGR2-1ogg]$pwd/ogg[oracle@OGGR2-1ogg]$Logintothedatabaseand......
  • 车灯芯片 AP2915 一切二降压恒流驱动IC
    产品描述 AP2915是一款可以一路灯串切换两路灯串的降压恒流驱动器,高效率、外围简单、内置功率管,适用于5-80V输入的高精度降压LED恒流驱动芯片。内置功率管输出最大功率可达12W,最大电流1.2A。AP2915一路灯亮切换两路灯亮,其中一路灯亮可以全亮,可以半亮。AP2915工作频......
  • 如何把本地项目初始化到gitLab上去,干货分享!!
    说明:1.适用范围(高手请忽略)例如:你本地已经有一个项目了(或者别人发一个项目给你),但是你需要把这个项目托管到你的gitLab上去操作步骤:1.首先在你的gitLab上建一个空的工程目录(很简单,百度一下),建好之后看到应该是这个样子的,上面也有对应的使用说明,教你如何把本地项目上传文件到git......
  • 2023年暑假集训总结/6.29
    6-27T1有毒爱排列有毒让你求长度为n且逆序对个数对p取余为k的排列的个数,答案对998244353取模。考试时我考虑到设fi,j表示放了数1∼i,此时逆序对个数modp=j的排列个数。转移显然,枚举i+1放到哪个位置即可,时间复杂度O(n^2p)。得了60分,而后通过观察性......
  • 关于 TypeScript 的变量声明和解构赋值(Destructuring Assignment)
    看下面这段代码:const{queryParams,fragment}=this.router.parseUrl(url);const[,path]=url.match(this.URL_SPLIT)??[,''];这段TypeScript代码虽然较短,但仍然展示了许多TypeScript的特性和语法。以下是对这段代码的分析,涵盖了相关的TypeScript特性和语法。......
  • Java中Map初始化时直接赋值的方法
    publicstaticfinalMap<String,String>BANK_TYPE=newHashMap<String,String>(){undefinedprivatestaticfinallongserialVersionUID=1L;//可有可无{undefinedput("ZX","中信银行");put("PN",&qu......