隐式覆盖
指iso-c++的函数覆盖,不同的是必须在子类覆盖函数最后加上关键字override
如:
virtual
void
Speak()
override
... {}
... {}
隐藏覆盖
表示子类与父类同名的函数不再覆盖相应父类函数,而是新建这个函数。即与父类没有多态关系。
ref
class
ParentClass
... {
virtual void Print();
}
ref class ChildClass
... {
virtual void Print() new;
}
ParentClass ^ pp = gcnew ChildClass;
pp -> Print();
... {
virtual void Print();
}
ref class ChildClass
... {
virtual void Print() new;
}
ParentClass ^ pp = gcnew ChildClass;
pp -> Print();
调用的是父类的Print()。
显式覆盖
显式覆盖是C++/CLI的新特性,有如下3种性质:
1.可以覆盖不同名的父类函数
ref
class
Puppy :
public
Dog
... {
public:
virtual void Yip () = Dog::Speak
...{
}
} ;
... {
public:
virtual void Yip () = Dog::Speak
...{
}
} ;
2.可以覆盖不是直接父类的函数