我只是C ++语言的初学者,我对这段代码有一些疑问。我试图超载一些运营商。
string& operator = (char R) { string T = R ; *this = T; return *this; }
第一个问题:为什么我需要在构造函数可以完成工作时重载等于运算符?
第二个问题:(不相关)(char R)
的含义是什么?
答案 0 :(得分:2)
第一个问题:为什么我需要在构造函数可以完成工作时重载等于运算符?
构造函数被设计为“构造”一个对象......虽然存在一种称为复制构造函数的东西,但它并不是设计用于将已存在的对象实际复制到另一个已存在的相同(或可转换)类型的对象中......这是operator=
的工作。此外,您不是“重载”operator=
方法,而是创建要使用的方法的用户定义版本,而不是对象类型的默认编译器创建方法,这将简单地强制复制位一个对象的内存占用到另一个对象...如果你的对象正在管理它自己的指针等,这样一个暴力拷贝可能是一个非常糟糕的事情,因为指针所有权变得模棱两可等等。
答案 1 :(得分:0)
(char R)
是运算符的右侧参数(此处为=
)
您希望这样做,以便在初始化
之后设置值//constructor
Foo a('f')
//copy constructor
Foo b = Foo('p');
// operator=
b = 'g';
答案 2 :(得分:0)
(char R)
是运算符的参数,就像你有一个正常函数的参数一样。
答案 3 :(得分:0)
C ++中的运算符重载。这是最好的版本之一。
http://msumca2012.blogspot.in/2013/03/oop-41-operator-overloading-in-c.html