c++ - 如何在 C++ 中创建一个类,使其像本地 int 类一样工作

标签 c++ class types int declaration

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

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

int x;
x=7;
cout << x;

//在屏幕上输出 7。

如此相似……

abc x;
x=7;
cout << x;

我要放什么

class abc{
\\ HERE!!!!!! 
};

所以我可以这样做

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;
}

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

最佳答案

and learned that int, types, are just premade classes

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

cout<<s;

你可以这样创建它:

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

有关详细信息,请参阅 FAQ关于运算符重载。

关于c++ - 如何在 C++ 中创建一个类,使其像本地 int 类一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12609749/

相关文章:

c++ - Visual Studio 2010 中 unique_pointer 的奇怪行为

php - 从同一个 PHP 类中的另一个方法调用一个方法

Python __getattribute__ (或 __getattr__) 模拟 php __call

c# - 如何从类型创建新的对象实例

c++ - 如何以编程方式防止 linux 计算机休眠或打开屏幕保护程序?

C++是静态类型语言,为什么我们可以在运行时获取类型

c++ - 从后面插入和从前面和后面取出的最有效容器是什么?

java - 从目录中检索 .class 文件列表

c# - 根据给定的字符串输入确定类型

scala - Scalaz 中的隐式参数