如何在 C++ 中创建一个类,使其像原生 int 类一样工作

Muh*_*mer 3 c++ int types class declaration

我正在学习 C++,并了解到 int 类型只是预制类。所以我想也许我应该尝试创建一个。

我想做的基本上是一个普通的 int 类

int x;
x=7;
cout << x;
Run Code Online (Sandbox Code Playgroud)

// 屏幕上的输出为 7。

如此相似...

abc x;
x=7;
cout << x;
Run Code Online (Sandbox Code Playgroud)

我会放什么

class abc{
\\ HERE!!!!!! 
};
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做

class SomeClass {
public:
    int x;

    SomeClass(int x) {
        this->x = x;
    }
};

int main(int argc, char *argv[]) {
    SomeClass s = 5;

    cout << s.x << "\n"; // 5

    s = 17;

    cout << s.x << "\n"; // 17

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是正如您所看到的,我必须使用 sx 来打印值 - 我只想使用 's'。我是在做一个实验,我不想听到这个方法是好是坏,毫无意义或革命性,或者无法完成。我记得我做过一次。但只能通过复制和粘贴我不完全理解甚至忘记的代码。

Mat*_*lia 6

并了解到 int 类型只是预制类

这是完全错误的。尽管如此,您仍然可以完全控制您的类在表达式中的行为方式,因为您可以(几乎)重载任何运算符。您在这里缺少的operator<<是在您执行以下操作时调用的通常重载:

cout<<s;
Run Code Online (Sandbox Code Playgroud)

您可以像这样创建它:

std::ostream & operator<<(std::ostream & os, const SomeClass & Right)
{
    Os<<Right.x;
    return Os;
}
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅有关运算符重载的常见问题解答。