调用对象时,C ++返回对象成员变量?

时间:2020-08-27 12:58:56

标签: c++ class object

例如,如何使一个类在被调用时返回一个成员变量?说:

class Person {
    std::string name;

    // Constructor and Destructor go here..
};

Person mike = "Mike";

// /!\ How do you make "mike" return "Mike" directly when the object mike is called?
//  This is the same thing like an int return its value and a vector returns its members (scalars)
std::string name = mike;

其他编辑:强制转换运算符不是一个好的选择,因为它破坏了类型的写入方式。例如std::string name = static_cast<string>(mike);是达成目标的一种可怕方法。

1 个答案:

答案 0 :(得分:2)

您正在寻找一个转换运算符,其写法如下:

class Person {
    std::string name;
 public:
    Person(char const * name) : name(name) {}
    operator std::string () const { return name; }
};

这里是demo

您还可以将转换操作符作为模板,例如:

template<typename T>
operator T() const { return name; }

这里是demo