這只是一個實驗代碼。過載虛擬操作符 - >()
struct B
{
virtual B* operator ->() { return this; }
void foo() {} // edit: intentionally NOT virtual
};
struct D : B
{
virtual D* operator ->() { return this; }
void foo() {}
};
int main()
{
B &pB = *new D;
pB->foo(); // calls B::foo() !
}
我知道operator
必須使用對象或引用來調用;因此在上述情況下確實參考pB
仍堅決B
的目標? 雖然這是不實際的,但出於好奇,有沒有辦法通過pB
調用D::operator ->
?
當你想有富()虛擬無厘頭有操作符 - >虛擬。 – 2011-06-05 03:55:18
我可能會在這裏丟失一些東西,但是隻是使'void foo()'虛擬有什麼問題呢?在這種情況下'operator - >()'是完全沒有意義的,尤其是因爲它只是返回'this'。 – 2011-06-05 03:56:32
@In silico,我同意,這只是一個實驗代碼,用於瞭解'operator - >'變成'virtual'時會發生什麼。我編輯了我的問題。謝謝。 – iammilind 2011-06-05 04:07:37