【发布时间】:2016-07-31 16:49:18
【问题描述】:
class SomeClass {
int someNum;
const int someConst;
public:
SomeClass() : someNum(12), someConst(15)
{
}
SomeClass operator+(int num) {
SomeClass newSomeClass;
newSomeClass.someNum += num;
return newSomeClass;
}
};
int main() {
SomeClass someClass;
SomeClass newClass;
newClass = someClass + 3;
}
我不明白为什么上面没有编译,但是在删除了 const 相关代码时会编译。
【问题讨论】:
-
也许查一下
const是什么意思? -
您认为
newClass = someClass + 3;会如何工作? -
如果有一个函数可以打印出 someNum,我希望它在 newClass 中的值是 15。就 juanchopanza 而言,是因为 newClass 被分配了一个新的 someConst ,它具有不同的内存地址,尽管值相同?如果是这样,我将如何在具有 consts 的类中使用运算符重载?
-
"...为什么上面没有编译.." - 当它编译失败时,发出的错误消息,你不方便地从你的帖子中省略了,肯定会试图扩展一些原因 为什么?专业提示:如果您曾经对错误有任何疑问,您的问题应该逐字包含错误消息,以及您对您的想法的评估意思是。
标签: c++ constants overloading operator-keyword