Inv*_*tus 2 c++ operator-overloading
我发现这里的一些帖子讨论了运算符重载和运算符,这些运算符不能在c ++ . :: .* sizeof等中重载.但我无法找到确切的细节或原因,为什么要.*避免?你们中的很少人可能会把它作为重复投票,但如果我得到关于我想要的那些链接的详细信息,我会非常高兴:)
从马的口中:
运算符
.(点)原则上可以使用与 - >相同的技术重载.但是,这样做可能会导致关于操作是针对对象重载.还是对象所引用的对象的问题,.例如:
class Y {
public:
void f();
// ...
};
class X { // assume that you can overload .
Y* p;
Y& operator.() { return *p; }
void f();
// ...
};
void g(X& x)
{
x.f(); // X::f or Y::f or error?
}
Run Code Online (Sandbox Code Playgroud)
这个问题可以通过几种方式解决.在标准化的时候,哪种方式最好是不明显的.
AFAIU同样的理由适用 .*
| 归档时间: |
|
| 查看次数: |
2492 次 |
| 最近记录: |