C++重载赋值运算符
来源:互联网 发布:人工智能辅助器具研发 编辑:程序博客网 时间:2024/06/08 10:02
#include <iostream>
#include<cstring>
using namespace std;
class name
{
public:
name(char*pn='\0');
name(const name&);
name&operator=(name);
//~name();
protected:
char*pname;
int size;
};
name::name(char*pn)
{
cout<<"constructing "<<pn<<endl;
size=strlen(pn);
pname=new char[size+1];//分配空间
if(pname!=0)//还不懂什么意思
strcpy(pname,pn);
}
name::name(const name&obj)
{
cout<<"copying"<<obj.pname<<"into its own block\n";
size=obj.size;
pname=new char[size+1];
if(pname!=0)
strcpy(pname,obj.pname);
}
name&name::operator=(name obj)
{
//delete[]pname;
size=obj.size;
//pname=new char[size+1];
//if(pname!=0)
strcpy(pname,obj.pname);
return*this;
}
/*name::~name()
{
cout<<"destructing "<<pname<<endl;
pname[0]='\0';
delete[]pname;
pname=NULL;
size=0;
}*/
int main()
{
name obj1("zhangsan");
name obj2=obj1;
name obj3("noname");
obj3=obj2=obj1;
return 0;
}
还不懂为什么要用两个复制构造函数,为什么要用const,为什么是if(pname!=0),pname不是定义为char???当obj1被赋值时,为什么第二个复制构造函数不用执行。
- C++:赋值运算符重载
- 重载赋值运算符(c/c++)
- 重载赋值运算符(c++)
- 重载赋值运算符
- 重载赋值运算符
- 重载赋值运算符
- 重载赋值运算符
- 重载赋值运算符
- 重载赋值运算符
- 赋值运算符重载
- 赋值运算符重载
- 重载赋值运算符
- 重载赋值运算符
- 赋值运算符重载
- 赋值运算符重载
- 重载赋值运算符
- 赋值运算符重载函数[C/C++/C#]
- [C++]拷贝构造函数和赋值运算符重载
- 二叉树基本操作及面试题
- 阻塞队列实现生产者消费者
- J2EE中修改了jsp页面或者html页面重新启动tomcat无效问题
- 经典面试题(四)
- php多版本在linux上的使用
- C++重载赋值运算符
- HDU 2089 不要62-数位DP-学习笔记
- color the ball -- hdu -- 树状数组
- PHP中循环结构之foreach循环语句(下标和值)
- Java Socket实现HTTP客户端来理解Session和Cookie的区别和联系
- 刘汝佳《算法竞赛入门经典(第二版)》习题(六)
- 图像处理与特征提取
- java多线程(三)
- 英文字母间出现不明空格