VC&operate =操作(重载)解释

来源:互联网 发布:英雄联盟mac版本下载 编辑:程序博客网 时间:2024/05/29 17:30

const LLType &operator=(const LLtype&);

//这里面的LLType不是一个结构体,而是一个结构体模板,结构体模板是不能定义对象的,

比如下面定义一个结构体模板:templatestruct LLType{//一些数据和函数的声明};在使用的时候必需要有一个类型将这个模板结构实例化后才能定义对象,

比如上面的是以Type类型来实例化这个模板结构,实例化之后的用法就和普通结构体的用法一样了整个函数是重载一个赋值运算符(=),

即能使用Type类型实例化的结构能够进行你自己定义的赋值操作,其实结构体的赋值系统有定义,只不过为了让自己的意愿赋值或者里面要动态申请空间(有关深拷贝与浅拷贝的问题)才重载一下=运算符的.const说明这个函数返回的是一个常量,第二个const说明传递的参数不会改变(不过也可以通过特殊的方式进行改变,

比如用const_cast进行强制转换),这里是赋值,所以不希望=右边的变量发生改变,所以就采用这种方式,返回的值设计成引用,这个是为了实现多次=,比如A=B=C=D;



TVideo &operator=(const TVideo&);

这是赋值运算符重载的标准格式,形参为本类对象的常引用,返回值是本类对象自己的引用可以做左值,只能用类的成员重载重载赋值运算符用于类中有动态分配成员时,本类对象相互赋值用,为避免C++默认按位赋值方式带来的一系列问题,用户必须重载该函数,
习惯上默认的按位赋值称为浅拷贝,有动态分配成员时的复制称为深拷贝。当然,即使类没有动态分配成员时,也可以重载该赋值运算符,不过不是特殊目的一般多余

原创粉丝点击