c++赋值运算符重载

原创 2012年03月30日 16:33:49

赋值运算符重载


Thing &operator=(const Thing &t){

 //判断是否赋值本身

   if(*this!=t){

      delete name;
      name=new Thing[strlen(t.name)+1];
      strcpy(name,t.name);

      //其他变量也得赋值
   }

}

拷贝构造

Thing::Thing(const Thing &t){
      delete name;
      name=new Thing[strlen(t.name)+1];
      strcpy(name,t.name);
      //其他变量也得赋值
}
一  用一个已经存在的对象去创建另一个对象
1:
Thing t;
Thing tt(const Thing &t);
2:
Thing *t=new Thing(t);
二   函数的参数是类类型。传值
Thing t;
fun(t);
void fun(Thing t){}
三  函数的返回值是类类型,返回一个对象
Thing fun(){
   return t;
}
四  创建对象时如果用赋值运算符,如果左边的对象是没有创建的而右边是已经创建的
Thing t;
Thing tt=t;

Thing t;
Thing tt;
tt=t;

则不会调用拷贝构造  只会调用赋值运算符重载



本文来源:http://blog.csdn.net/pzw0416/article/details/7389309

如需转载,请注明出处。。


C++之派生类的拷贝构造与赋值运算符重载

这里只说一下为什么派生类在拷贝构造器和赋值运算符重载中一些注意语法: 一、派生类的拷贝构造器1.派生类的拷贝构造器跟普通构造器一样,若没有自定义生成,编译器会自动生成拷贝构造器,自动调用父类的拷贝构...
  • maoliran
  • maoliran
  • 2016年06月09日 19:28
  • 1684

C++类的赋值运算符“=”重载,以及深拷贝和浅拷贝

C++类的赋值运算符“=”重载,以及深拷贝和浅拷贝 在面向对象程序设计中,对象间的相互拷贝和赋值是经常进行的操作。 如果对象在申明的同时马上进行初始化操作,则称之为拷贝运算。例如: class1 A(...
  • liubing8609
  • liubing8609
  • 2014年11月23日 14:51
  • 2696

关于C++重载赋值运算符"="的讨论

原文地址:http://www.vckbase.com/index.php/wv/219 [问题的提出]: 在很多书籍和文章中,很多次提到在对赋值操作符(=)进行重...
  • wangxiaoqin00007
  • wangxiaoqin00007
  • 2013年10月29日 16:09
  • 2058

C++运算符重载(8) - 默认赋值操作符和引用

前面的一篇文章已经讨论过了赋值操作符重载的问题,点此链接"C++运算符重载(3) - 什么时候需要自定义赋值操作符"。此篇文章是前一篇的扩展。在前面的这篇文章中,已经说过了什么当没有用户定义的赋值操作...
  • shltsh
  • shltsh
  • 2015年05月26日 09:57
  • 909

C++本质:类的赋值运算符=的重载,以及深拷贝和浅拷贝(收藏)

关键词:构造函数,浅拷贝,深拷贝,堆栈(stack),堆heap,赋值运算符 摘要:     在面向对象程序设计中,对象间的相互拷贝和赋值是经常进行的操作。     如果对象在申明的同时马上进行...
  • business122
  • business122
  • 2014年03月14日 17:13
  • 1555

C++赋值运算符重载,为什么要返回引用?

一、c/c++赋值运算符的本意为“返回左值的引用”(左值:赋值号左面的变量而非其值)   例:   int a, b = 3, c = 2;   (a = b) = c;   ...
  • realdinghao
  • realdinghao
  • 2014年02月25日 09:45
  • 567

C++运算符重载(3) - 什么时候需要自定义赋值操作符

答案与拷贝构造函数一样。如果一个类不包含指针,则不需要自定义赋值操作符与拷贝构造函数。编译器会给每个类创建一个默认的拷贝构造函数和默认的赋值操作符。但是,当类中包含有指针或任何运行时分配的资源时,编译...
  • shltsh
  • shltsh
  • 2015年05月26日 09:32
  • 1071

为什么C++赋值运算符重载函数不能被继承?

原文地址:http://blog.csdn.net/pbmichael/article/details/1608250 这个问题曾经困扰过我一阵子。请先看一下下面的源代码: class A1 ...
  • WUYUAN2011WOAINI
  • WUYUAN2011WOAINI
  • 2013年07月22日 13:38
  • 6351

C++ 重载运算符“=”检测自赋值

重载赋值运算符 赋值运算符可能是最容易令人迷惑的一个,所以,重载它必须十分的小心。 1. 值运算符仅能重载为成员函数。  C++不允许赋值运算符被重载为全局形式,这是因为如果可以写出...
  • wo17fang
  • wo17fang
  • 2014年08月12日 10:40
  • 596

C++重载复合赋值运算符、算术运算符和关系运算符

原文链接:http://blog.csdn.net/lyh__521/article/details/49622601复合赋值运算符  形如‘*=’、‘+=’、‘/=’等这样的运算符称为复合赋值运算符...
  • lyh__521
  • lyh__521
  • 2015年11月03日 21:35
  • 1662
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c++赋值运算符重载
举报原因:
原因补充:

(最多只允许输入30个字)