是否可以为可使用点运算符访问的数据类型创建 C++ 函数?

SAH*_*ESI 1 c++

我想创建一个与 int 数据类型关联的函数,可以使用点运算符访问该函数,以便:

int x = 9;
std::string s = x.ToString();
Run Code Online (Sandbox Code Playgroud)

我知道如何使用 std::string 等来执行此操作,但不知道如何使用 int 数据类型。那可能吗?

ZOu*_*adj 5

不,这是不可能的。Anint是原始类型,而 astd::string是包含方法的类类型。

但是,您可以创建自己的结构/类来实现此功能。该struct Int类型有一个构造函数,它接受一个整数并使用初始值设定项列表:a(value)为内部整数分配给定值。

#include <string>

struct Int
{
    int a;

    Int(int value)
        : a(value)
    {}

    std::string ToString() const { return std::to_string(a); }
};

int main()
{
    Int a = 20;
    std::string s = a.ToString();
}
Run Code Online (Sandbox Code Playgroud)

  • C++11 中未引入构造函数初始化列表。自 1998 年以来,它们一直存在于所有 C++ 标准中。C++11 引入了统一初始化和 `std::initializer_list` 模板类型,但它们有所不同。 (2认同)