class PureVirtual
{
public: virtual PureVirtual& Foo() = 0;
virtual ~PureVirtual() {}
};
class SemiVirtual : public PureVirtual
{
public: PureVirtual& Foo() { printf ("foo worked."); return *this; }
virtual ~SemiVirtual() {}
};
class NonVirtual : public SemiVirtual
{
public: NonVirtual& Bar() { printf ("bar worked."); return *this; }
};
TEST (Virtualism, Tests)
{
PureVirtual& pv = NonVirtual().Bar().Foo(); <-- Works
pv.Foo(); // <- Crashes
}
pv.Foo由於已經配置了pv實例而崩潰。我怎樣才能防止這種情況,並調用foo函數而不使用指針,而是通過引用?上傳實例並在C++中調用基類上的函數
文章您可以臨時綁定到const引用以延長其使用壽命。 – 2010-08-05 18:51:57
我不明白你打算告訴通過使用const引用。像這樣='PureVirtual&const Foo(){}'。 – 2010-08-05 19:23:29