gpt4 book ai didi

c++ - 重载 operator= 与非类类型

转载 作者:行者123 更新时间:2023-11-30 02:34:55 24 4
gpt4 key购买 nike

很抱歉这个可能很愚蠢的问题。我想覆盖类变量的默认修改器/访问器(使用 = 运算符而不是通常的 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 类中的某些内容以在 = 运算符上返回原语,或者这是否仅适用于设置类对象?

我看不到很多情况下这可能有用,因为它会使代码更加模棱两可,但我正在转换一些覆盖了它们的增变器和访问器的 python 代码,所以我想知道 C++ 是否具有类似的功能。

最佳答案

您可以定义一个转换运算符来使 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_; }
};

关于c++ - 重载 operator= 与非类类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34186728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com