如何仅使用对象名称打印对象特定的成员?

时间:2020-07-13 04:34:34

标签: c++ output operator-overloading

string var = "Hello";
cout << var << endl;

我们仅使用对象获得结果,而无需成员变量的帮助。我想实现一个像string一样工作的类。例如:

class Test {
public:
    int x = 3;
};

Test var2;
cout << var2 << endl;

如何实现该类,以便cout行打印x的值而不引用它?

1 个答案:

答案 0 :(得分:0)

std::string类的操作符<<已重载,这就是为什么您要编写:

std::string text = "hello!";
std::cout << var1 << std::endl; // calling std::string's overloaded operator <<

简单地打印其保留的文本。

因此,您需要为该类重载<<运算符:

class Test {
    int x = 3;
public:
    friend std::ostream& operator<<(std::ostream& out, const Test& t) {
        out << t.x;
        return out;
    }
}

// ...

Test var2;
std::cout << var2 << std::endl;