c++ - 为什么operator->重载在VC2010中不起作用?

标签 c++ operator-overloading

class A
{
public:
    A* operator->() const
    {
    }
    void Test() {}
};

然后这样调用它。

A* a = new A;
a->Test();

代码在 VC2010 中成功构建并运行。看起来很奇怪。我想知道这是设计使然还是 VC2010 的错误?

谢谢

最佳答案

在示例中,您没有调用 operator->,而是直接从 A* 调用 Test。你想要:

(*a)->Test();

或者...

A a;
a->Test();

VS2010 在 operator-> 方面没有任何问题(据我所知)。

在名为 a 的指针上使用 -> 可有效执行:(*a).。按值对变量使用 -> 将调用您的 operator->(如果存在),或者如果没有 operator->,则会出现语法错误.

关于c++ - 为什么operator->重载在VC2010中不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11054772/

相关文章:

c++ - 在 .cpp 文件中实现 operator== 的正确方法

c++ - 以可变参数函数为参数的函数

c++ - OpenGL:将动态分配的矩阵传递给统一

C++模板类运算符重载

c++ - 从父类调用基类重载运算符

c++ - 临时变量被重载的 + 和 += 运算符破坏

c++ - 带运算符的函数模板

c++ - 将字符串从 VBA 传递到 C++ DLL

c++ - 用运算符<<返回一个按值

android - 构建无版本号后缀的 boost