[英]What's the matter with 'const Obj' and 'Obj &'?
我想写一个与 std::set 兼容的 class,所以我像这样重载了“小于”运算符。 有用。
bool Segment::SVertex::operator<(const SVertex &rhs) const
{
return id < rhs.id;
}
但是,由于我写的 Java 比 C++ 多,所以“rhs.id”对我来说看起来很不舒服。 所以我把它改成'rhs.getId()',其中getId()只是一个普通的getter function:
long SVertex::getId(){return id;}
这原来是一个编译时错误:无法将“this”指针从“const Segment::SVertex”转换为“Segment::SVertex &”
(注意我的VS2008不是英文的,我翻译了错误信息,所以上面那行不一定准确)
我只知道 '&' 表示通过引用传递,而 'const' 禁止任何更改。 我不完全了解幕后发生的事情。
问题是您的吸气剂 function 并不完全“正常”; 你的吸气剂应该是
long SVertex::getId() const
{return id;}
注意最后的const :它告诉编译器/用户此方法不会修改类的内部结构。 因此,可以在运算符 < 中使用它,它也是 const。 const 成员函数只有也是 const 时才能调用其他成员函数; 非常量成员函数可以调用任何。
你的吸气剂必须是常数:
long SVertex::getId() const {return id;}
这表明它不会更改 object。
你的rhs
是const
,所以你不能改变它。 另一方面,您的getId
不是 promise 不改变this
- 它也需要是 const:
int SVertex::getId() const { return id; }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.