c++拷贝构造函数和赋值操作符重载
来源:互联网 发布:单片机按键怎么接 编辑:程序博客网 时间:2024/05/07 10:45
c++拷贝构造函数:
class A{ A(const A& a); ....}
由于拷贝构造函数中,一般不允许对原对象进行修改,因此一般在参数中使用const关键字进行限制。
拷贝构造函数一般用于需要new内存等操作。如果不允许使用拷贝构造函数,可以将该函数声明为private类型的。
复制操作符重载:operator=
通常,operator=应该返回一个本类的引用,并且由return *this结束。
class A{ A& operator=(const A& a) { ...... return *this; }}
记住:
在使用operator=时,一定要首先判断是否是自己赋值给自己,否则容易引起错误!
比如
对于:
class String{public: String& operator=(const String& s);private: char *data;}
我们可以很容易的实现:
String& String::operator=(const String& s){ delete[] data; data = new char[strlen(s.data) + 1]; strcpy(data, s.data); return *this;}
但是这个是有严重问题的!假如一个String对象赋值给他自己,这样会导致data信息丢失!
因此需要在复制之前先判断!
String& String::operator=(const String& s){ if (&s != this) { ...... } return *this;}
当然也还有别的方法,比如先用另外一个指针申请内存,复制过去之后,再delete data,然后再把新指针的地方赋值给data。这样做不如上一种方式好,因为如果是对象自己给自己复制的话,这个要浪费时间
- 拷贝构造函数和重载"="赋值操作符
- c++拷贝构造函数和赋值操作符重载
- 关于拷贝构造函数和重载赋值操作符
- 拷贝构造函数 和 赋值操作符重载
- [C++]拷贝构造函数和赋值运算符重载
- c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
- 拷贝构造函数和赋值操作符
- 赋值操作符和拷贝构造函数
- 赋值操作符和拷贝构造函数
- 拷贝构造函数和赋值操作符
- 赋值操作符和拷贝构造函数
- 赋值操作符和拷贝构造函数
- 赋值操作符和拷贝构造函数
- 拷贝构造函数和赋值操作符
- 赋值操作符和拷贝构造函数
- 拷贝构造函数和赋值操作符
- 拷贝构造函数与重载赋值操作符的区别
- 拷贝构造函数与重载赋值操作符
- liunx下面让tomcat在某个时间自动重启
- 程序员的好习惯
- 启动和关闭oracle
- 软件挂起 UI状态保持和恢复--2
- Android_APP级异常捕获实现方式
- c++拷贝构造函数和赋值操作符重载
- 百度地图教程
- 字符串逆置;字符型和整型数据输出
- Linux tcpdump命令详解
- 把时间当朋友 - 笔记
- SQL server 2008 数据类型轻松查看
- Berkeley DB DB数据库
- 综述天分、标网、矢网、扫频仪的异同
- Hadoop: the definitive guide 第三版 拾遗 第十一章 之Pig