我有两节课:

template <class T>
class TArray
{
public:
    TArray& operator =(const TArray &array) { return Copy(array); }
    virtual TArray& Copy(const TArray &array) { ... }
}

class TString : public TArray<TCHAR>
{
public:
    TString& Copy(const TString &string) { ... }
}


类还需要构造函数。
但是第二类中的方法Copy不会覆盖第一类中的方法。
考虑以下代码:

TString a = _T("aaa");
TString b;
b = a;


第三行程序在TArray中输入赋值运算符。其中thisarray实际上是TString类型。但是,当调用Copy时,程序将输入方法TArray :: Copy,而不是我期望的TString :: Copy。为什么?

我正在使用Visual Studio 2015 RC,但是我正在从Visual Studio 6.0项目中移出一些代码,并且我很确定它已经在其中工作了。有什么改变吗?

最佳答案

您不会覆盖任何内容,因为方法具有不同的签名:

TArray& Copy(const TArray &array)




TString& Copy(const TString &string)

关于c++ - Visual C++-虚拟方法未覆盖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30730714/

10-11 22:48