大神,谁能否帮我详解一下c++中在建立对象时 初始化和赋值的差异呢?

问题描述

大神,谁能否帮我详解一下c++中在建立对象时 初始化和赋值的差异呢?
大神,谁能否帮我详解一下c++中在建立对象时 初始化和赋值的差异呢?谢谢,不胜感激!

解决方案

看你赋值说的是什么意思。
比如说

 class A{public:    A(int i)    {        cout << ""A(int)"" << i << endl;    }};int main(){    A a = 1;}

运行
A(int)1
Press any key to continue . . .
同样的定义
A b = a;
就不会调用构造函数
但是如果你定义了拷贝构造函数,又不一样了。

所以不能简单根据等号去判断。

解决方案二:
赋值操作是在两个已经存在的对象间进行的,而初始化是要创建一个新的对象,并且其初值来源于另一个已存在的对象。编译器会区别这两种情 况,赋值的时候调用重载的赋值运算符,初始化的时候调用拷贝构造函数。

解决方案三:
从使用上讲:
1. 初始化显然要比赋值快一点,越是大型的对象越应该初始化而不要定义后再赋值
2. 如果定义了const,则只能初始化,不能随后赋值。

解决方案四:
初始化就是开辟一块内存,新建一个对象,并赋予数据,而赋值就是内存之前就已经被开辟了,只是改变内存里面的数据而已

解决方案五:
C++对象创建时先调用operator new申请空间,然后调用operator new 调用构造函数来初始化对象中的子对象。
如果你需要赋值,最好自己来实现赋值操作符重载函数。在 Object b;Object a=b;时回调用赋值操作符重载函数 Object& operator=(const Object& other);
在使用 Object b; Object a(b);时会调用拷贝构造函数,最好也自己实现 Object(const Object& other);

解决方案六:
初始化是开辟空间
赋值是向空间里放数据

解决方案七:
初始化和赋值是两种不同的过程,一般都认为是一样的效果,上面的大神解释的很详细了

解决方案八:
初始化是调用构造函数,从而实例化一个对象。而赋值是对一个已经生成的对象再赋予新的数据。

时间: 2024-07-28 18:03:21

大神,谁能否帮我详解一下c++中在建立对象时 初始化和赋值的差异呢?的相关文章

网页-html+css新手,大神们能帮看看这个布局怎么搞么

问题描述 html+css新手,大神们能帮看看这个布局怎么搞么 如图,这是我网页布局的草稿,具体应该怎么搞不太明白.能帮帮我么 解决方案 图片转过来啦 解决方案二: 在中间多加一个div用来装中间的三个div 解决方案三: 解决方案四: 上下两个div,一个float是top,一个bottom,中间那个用absolute的postion,自己用JavaScript去控制它的left和top,以及height,它里面套3个div,自己控制宽度 解决方案五: 中间三个div用浮动就行了 解决方案六:

编程-csdn上别人提的问题,大神,能帮我改改吗?

问题描述 csdn上别人提的问题,大神,能帮我改改吗? #include<stdio.h> #include<stdlib.h> int main() { char s[]="I have an apple.Do you like apple?"; char s1[]="apple"; char s2[]="orange"; int i,j,k,h,p,c; for(p=0;s[p]!='';) p++; for(i=0;

压缩感知的大神们,帮帮忙啊,一维信号的MP算法重构,稍微改动了下矩阵,出错了

问题描述 压缩感知的大神们,帮帮忙啊,一维信号的MP算法重构,稍微改动了下矩阵,出错了 clc clear all; close all; M = 64; ? %观测信号长度 N = 256; ?%稀疏信号长度 K = 7; ? %稀疏度 f1=50; ? ?% ?信号频率1 f2=100; ? % ?信号频率2 f3=200; ? % ?信号频率3 f4=400; ? % ?信号频率4 fs=800; ? % ?采样频率 ts=1/fs; ?% ?采样间隔 Ts=1:N; ? % ?采样序列

编程-大神们能帮我看下这个C里就多了这几行没多大关系的代码,就引发了异常断点?

问题描述 大神们能帮我看下这个C里就多了这几行没多大关系的代码,就引发了异常断点? 在第一张图里上一个cEx2数组输出正常,然后就经过了imper2的内存分配和赋值,不应该造成下面在cEx2[1]输出时引发的断点啊! 求解神们?查了一下午仍然没结果,只能求神了-- 解决方案 已解决,编译器问题好像.只要把malloc放到开头,就不会有这个问题. 求解释?表示不懂. 解决方案二: 多余了就把它删除了吧,可能是和你前面的代码发生冲突了-- 解决方案三: 希望能把问题描述清楚,这样大家才好帮你定位问题

quirk mode 兼容-谁能帮我详解一下 quirks mode,还有在做网页时怎么处理这个浏览器兼容问题 ,求教 ,谢谢

问题描述 谁能帮我详解一下 quirks mode,还有在做网页时怎么处理这个浏览器兼容问题 ,求教 ,谢谢 我搜了quirk mode ,但是感觉网上说的不是很清楚.我以前做了一些网页,有些浏览器可以正常显示,但换一个就可能乱掉了,一团糟,这个怎么处理,求教!

java-这段代码没看明大神们来帮看一下

问题描述 这段代码没看明大神们来帮看一下 这段代码没看明大神们来帮忙看下,尤其是if(flag)这块,还有while(true)为什么是死循环呢?小弟自学求大神说的详细一点. 解决方案 首先flag是实例变量,程序在生成你的测试类的实例时,会为实例变量赋初始值,boolean类型的默认值为false,在上面的程序中flag的值为false,程序走else分支,然后遇到while语句,while语句的格式为while(boolean){statements},意思是先判断boolean的值,如果为

求大神们来帮我解惑一下,opencv

问题描述 求大神们来帮我解惑一下,opencv 大一新生刚接触软件界面,实验室学长让我自学,让我一开始用vs搭配opencv做界面,最近我发现qt做界面也不错,然后还是要搭配opencv,我很想知道为什么一定要搭配opencv做界面,opencv的概念到底是什么,没有opencv就做不了界面了吗? 解决方案 图像识别库,很有用的,可以google下 解决方案二: 图像识别库,很有用的,可以google下

was出现这种情况,各位大神如果能帮我解决,悬赏10积分

问题描述 was出现这种情况,各位大神如果能帮我解决,悬赏10积分

javascript-急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题

问题描述 急JS编写的计算器 如何实现 连续加减乘除四则运算 求大神指点 急帮我再看看小数点的问题 <html> <head> <title>JiSuanQi</title> <!-- 移动层外部JS文件 --> <script src="src/js/yidong.js"></script> <link rel="stylesheet" href="src/css/