77问答网
所有问题
c++的一个小问题:将类的一个对象赋值给该类的另一个对象时,为什么不调用拷贝构造函数?
如题所述
举报该问题
推荐答案 2019-12-02
这里的区别还是比较细节的,需要仔细理解
如果是创建和赋值在一个语句,那么调用的是构造函数,例如:
A a1;
A a2 = a1;//调用拷贝构造,如果没有实现,那么默认按内存拷贝
其实这等同于A a2(a1);
如果不是这种情况,比如:
A a3;
a3 = a1;//调用重载的=操作符,如果没有实现,也是按内存拷贝。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://77.wendadaohang.com/zd/83NY3IWYINIYNWpYqY.html
其他回答
第1个回答 2019-12-01
构造函数
只有在创建对象的时候用于初始化
如果说定义的同时赋值就会调用构造
普通的赋值只会调用赋值重载operator=
因为这个时候对象已经存在了,不需要再构造
本回答被网友采纳
第2个回答 2020-01-01
这个是由于语言的规则约束所产生的,赋值等号运算符的重载,就是帮助我们将一个对象赋值给另一个对象,这种情况下,另外一个对象已经存在,而拷贝的时候,另外一个对象还没有生成本回答被提问者采纳
相似回答
c++的一个
简单程序,大哥大姐帮帮小弟
答:
问题在于你重载++时返回的是对象而非引用,正确用法是返回引用。B& operator++(){++x;return B(x);}这样B c=++b; 就会调用复制构造函数。如果像你这样返回对象,实际上 B c=++b 是
一个对象,
并不会调用复制构造函数和默认
赋值
函数。
C++
中
,拷贝构造
函数,和构造函数有
什么
区别?
答:
构造函数:是用于对对象初始化名字,必须与类的名字相同,比如说定义一个圆类。复制构造函数,在某种意义上相当于运算符“=”重载,把
一个对象
的数值复制
给另一个
class circle { public:circle (int r):radium(r){};//构造函数的第一种写法 circle (int r){radium=r;}//构造函数的第二种写法...
c++拷贝构造
函数
答:
在
C++
中,当把一个引用类型当作参数传送给方法时,其实是传送
的一个
副本,所以在系统内部会把这个obj3构造一次,
构造一个
副本传入方法,从而使得在方法内部对obj3的更改不会对外面的变量造成影响。(其实是对系统自动构造的那个变量的更改)第三次也不用说了,是在fun里的MyClass temp(p);中执行的。...
C++
里面
的构造
函数
,拷贝
函数
,赋值
函数,菜鸟求解
答:
构造函数 是一种特殊的方法 主要用来在创建
对象时
初始化对象 即为对象成员变量赋初始值.一个类也可以有多个构造函数,用来初始化不同形式的类。拷贝函数是特殊的构造函数,用来完成对象初始化,即定义
时赋值,
下面程序中有详解。如果没有定义,系统会调用默认
的拷贝构造
函数,但此函数不能处理深
拷贝问题
...
什么
是
拷贝构造
函数?拷贝构造函数何时被
调用
?
答:
拷贝构造
函数,又称复制构造函数,由编译器调用来完成一些基于同一类的其他对象的构建及初始化。在
一个对象
以值传递的方式传入函数体时;一个对象以值传递的方式从函数返回时;一个对象用于给另外一个对象进行初始化(常称为
赋值
初始化)时被自动调用。拷贝构造函数必须以引用的形式传递(参数为引用值)。
c++赋值
符号到底能不能直接将两
个对象赋值
答:
只有当两
个对象
已经被创建,在对象之间
赋值时,
才
调用赋值
操作符号。在用户没有定义
拷贝构造
函数和赋值操作函数时,编译器会自动生成这两个函数。因为编译器默认的这两个函数,是属于直接内存拷贝的。用户之所以要定义这两个函数,是因为用户在这两个操作里,需要有一些特定的操作。比如:1、对象有很多数据...
拷贝构造
函数的作用
答:
用一个已有的对象来初始化一个被创建的同类的
对象,
是一种特殊的构造函数,具有一般构造函数的所有特性,其形参是本
类对象
的引用。用户可以根据自己实际问题的需要定义特定的拷贝构造函数,以实现同类对象之间数据成员的传递。如果用户没有声明
类的拷贝构造
函数,系统就会自动生成一个缺省拷贝构造函数,这个...
大家正在搜
问对象的八个问题
必须问对象的一些问题
问对象什么问题比较好
问对象的99个问题
如何让将一个对象的值
考对象的小问题
问对象的问题大全
问相亲对象的问题
问对象的真心问题大全
相关问题
C++拷贝构造函数的问题,就是用一个类对象初始化另一个类对象...
C++ 类对象之间相互赋值,应该增加什么函数?为什么只定义拷...
c++中,如果构造函数没有缺省值,对象也没有参数赋值过去,那...
c++问题,用一个对象给一个对象赋值时,除了调用拷贝构造函数...
C++实现一个类,并且不允许拷贝构造此类的一个对象
C++中,有一个类,和其对象a,那么*this=a; 是不是...
c++:当函数的参数是类的对象时,会自动调用复制构造函数形成...
C++下对象的赋值和复制的具体区别?