1

我只是 C++ 语言的初学者,我对这段代码有一些疑问。我试图重载一些运算符。

string& operator = (char R) { string T = R ; *this = T; return *this; }

第一个问题:为什么我需要重载等于运算符而构造函数可以完成这项工作?
第二个问题:(不相关)是什么(char R)意思?

4

4 回答 4

2

第一个问题:为什么我需要重载等于运算符而构造函数可以完成这项工作?

构造函数旨在“构造”一个​​对象......虽然有一种称为复制构造函数的东西,但它并不是为了将一个已经存在的对象实际复制到另一个已经存在的相同(或可转换)类型的对象......这就是operator=. 此外,您不是“重载”该operator=方法,而是创建要使用的方法的用户定义版本,而不是对象类型的默认编译器创建的方法,这将简单地暴力复制内存占用的位一个对象到另一个对象...如果您的对象正在管理它自己的指针等,那么这种暴力复制可能是一件非常糟糕的事情,因为指针所有权变得不明确等等。

于 2013-03-09T12:56:34.943 回答
0

(char R)是运算符的右侧参数(此处=

你想这样做,这样你就可以在初始化后设置一个值

//constructor
Foo a('f')
//copy constructor
Foo b = Foo('p');
// operator=
b = 'g';
于 2013-03-09T12:57:47.203 回答
0

(char R)是运算符的参数,就像您有一个普通函数的参数一样。

于 2013-03-09T12:57:57.470 回答
0

C++ 中的运算符重载。这里最好的版本之一。

http://msumca2012.blogspot.in/2013/03/oop-41-operator-overloading-in-c.html

于 2013-03-10T15:40:58.947 回答