对不起这个可能很愚蠢的问题。我想覆盖类变量的默认mutator / accesor(使用=
运算符而不是通常的set/get
命名法。我想要一些可能性的指导。最近的资源我发现我的问题是this,它给了我50%的需要。
让我们假设我有这门课程(这段代码不是我的实际需要,而是我要问的一个更简单的例子。)
class IDCard {
int id;
int operator=(const int& n_id); // This works for copying
};
/*
* copy value of id out (no same value check)
*/
int& IDCard::operator=(const int& n_id) {
id = n_id;
return id;
}
鉴于IDCard my_id
,我可以这样做:my_id
= 10,但我也想这样做:int i = my_id
。
为此,我能够在IDCard类中重载某些内容以返回=
运算符上的原语,还是仅用于设置类对象?
我无法看到许多可能有用的情况,因为它会使代码更加模糊,但我正在转换一些覆盖了mutator和accessors的python代码,所以我想知道C ++是否具有类似的功能。
答案 0 :(得分:3)
您可以定义转换运算符以使int i = my_id
有效:
class IDCard {
int id;
public:
operator int() const { return id; }
};
但是我强烈反对它并建议使用普通的访问方法:
class IDCard {
private:
int id_;
public:
int id() const { return id_; }
};