Visual C++ - 虚拟方法未被覆盖

Visual C++ - Virtual method is not overriden

我有两个 classes:

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) { ... }
}

类 也有需要的构造函数。 但是第二个 class 中的方法 Copy 不会覆盖第一个 class 中的方法。 考虑这段代码:

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)

签名应该相同才能覆盖。在你的例子中,有两个不同的签名。

TArray& Copy(const TArray &array)
TString& Copy(const TString &string)