在 c++ 中重载 (),[] 运算符

发布于 2024-12-03 13:48:22 字数 55 浏览 3 评论 0原文

如何在 C++ 中重载 () 和 [] 运算符?用一些代码来证明。 不会影响编程语言的完整性吗?

How would you overload the () and [] operators in c++? Justify with some code.
Won't it affect the integrity of the programming language?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

来日方长 2024-12-10 13:48:22

它不会仅仅因为只能对用户定义的类型执行运算符重载而影响编程语言的完整性。在 C++ 中不可能重载内置类型的运算符。您无法使用数据指针(也涵盖数组)更改 [] 的行为。您无法使用函数指针更改 () 的行为。换句话说,C++的核心语言特性不能被重载。

It can't affect integrity of the programming language simply because operator overloading can be performed for user-defined types only. It is impossible to overload operators for built-in types in C++. You cannot change the behavior of [] with data pointers (that covers the arrays as well). You cannot change the behavior of () with function pointers. In other words, core language features of C++ cannot be overloaded.

童话 2024-12-10 13:48:22

这是一个例子:

class Test {
  const int size = 128;
  int data[size];
public:
  Test() { 
    // allocate memory for data, etc.
  }

  int& operator[](int index) {
    return data[index];
  }
};

Here's an example:

class Test {
  const int size = 128;
  int data[size];
public:
  Test() { 
    // allocate memory for data, etc.
  }

  int& operator[](int index) {
    return data[index];
  }
};
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文