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

How to print the objects specific member using only object name?

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

我们只使用对象得到结果,没有成员变量的帮助。我想实现一个像 string 一样工作的 class。例如:

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

Test var2;
cout << var2 << endl;

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

std::string class 重载了运算符 <<,这就是为什么当你写:

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

简单地打印它持有的文本。

因此,您需要为 class:

重载 << 运算符
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;