社区
C++ 语言
帖子详情
=号是缺省的位拷贝函数吗?
xxb51357
2003-08-19 05:00:07
CMyClass a;
CMyClass b;
a=b;//其中=号我没有重载,居然也能编译通过,是不是=号是通用(对于任意类
//型,包括自定义类)的位拷贝函数
...全文
22
7
打赏
收藏
=号是缺省的位拷贝函数吗?
CMyClass a; CMyClass b; a=b;//其中=号我没有重载,居然也能编译通过,是不是=号是通用(对于任意类 //型,包括自定义类)的位拷贝函数
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
RookieStar
2003-08-23
打赏
举报
回复
看看Scott Meyers的Effective C++吧!
yzb1000
2003-08-22
打赏
举报
回复
学习
nirvana_li
2003-08-22
打赏
举报
回复
在你没有显式的使用operato=(),编译器会自动的生成一个。 steedhorse(晨星) 讲的我完全赞成……
cdxiaogan
2003-08-19
打赏
举报
回复
没有重载时系统默认是按位拷贝的
结果是a和b 是两个值完全相同的对象,但其它方面还是完全独立的
如果b中还有指针会引起副作用
修改指针所指对象时会同时影响两个对象
这时就需要重载"=" 来绕过默认按位复制了
晨星
2003-08-19
打赏
举报
回复
如果类没有显式定义拷贝构造函数,那么编译器将生成一个默认的拷贝构造函数,所完成的功能仅仅是简单的逐字段拷贝。
如果类没有显式重载赋值运算符,那么编译器也将生成一个默认的,也是进行逐字段拷贝。
所以,如果类的结构较复杂,特别当需要分配堆内存时,要么应该自己定义拷贝构造函数与赋值运算符,来进行安全、干净的拷贝和初始化等动作,要么应把拷贝构造函数和赋值运算符声明成私有,从而禁止拷贝和赋值。
而如果类的结构比较简单,各个成员变量都是简单类型,那么则应该提倡使用默认的拷贝构造函数和赋值运算符,因为这样就足够了,而且不必每次改动类的内部实现时都要修改拷贝构造函数和赋值运算符。
神农氏
2003-08-19
打赏
举报
回复
在c语言中就有了,在两个struct之间可以用=赋值。按字节拷贝
tomsx
2003-08-19
打赏
举报
回复
可能你没有自定义拷贝构造函数,编译器遇到按值传递就会自动调用拷贝构造函数,比如你这里用到的=号,虽然你没有做什么,但编译器必需保证能运行下去,所以它就按默认的情况做按位拷贝。
我个人认为拷贝构造函数在编译器里的内部实现也是通过符号重载完成的,符号重载相对于拷贝构造函数可能更底层一些吧。
叙述讲解C++编程
本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、
函数
重载与
缺省
参数、输入输出流介绍、常量、内联
函数
、命名控制、引用和
拷贝
构造
函数
、运算符重载、动态对象创建、继承和组合、多态和虚
函数
、模板和包容器类、多重继承、异常处理和运行时类型识别。 本书作为正式教材和自学用书均非常优秀,作为程序设计者的参考用书亦极为合适。
C++“
拷贝
构造
函数
”和“重载 = 运算符”
拷贝
构造
函数
和
缺省
拷贝
构造
函数
拷贝
构造
函数
功能介绍
拷贝
构造
函数
是一种特殊的构造
函数
,作用是用一个已知的对象来初始化一个新创建的同类的对象。 关键字:①新创建的;②同类的; 定义方法 ClassName::ClassName([const]ClassName & obj) //注意形参是实参的【常】引用 { <
函数
体> } (如果是类体内进行定义,那么把类名限定去掉即可。) 特点 ①只有一个参数,且形参必须是对实参的引用(实参的别名); ②如果给出关键字 const ,那
C++ 构造
函数
的重载、
缺省
构造
函数
、类型转换构造
函数
、
拷贝
构造
函数
1. 构造
函数
的重载 2.
缺省
构造
函数
只要对象被创建,就会调用构造
函数
#include <iostream> using namespace std; class A { public: A(void){ cout << "无参构造
函数
" << endl; m_i = 0; } private: int m_i; }; class B { public: int m_j; // 基本类型
C++的
缺省
的
拷贝
构造
函数
和赋值运算符重载
函数
C++的
缺省
的
拷贝
构造
函数
和赋值运算符重载
函数
C++的6个
缺省
函数
C++的6个
缺省
函数
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章