对象类和子类的虚函数返回类型不同?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了对象类和子类的虚函数返回类型不同?相关的知识,希望对你有一定的参考价值。
抽象类IDate作界面
class IDate
public:
virtual ~IDate()
virtual IDate& operator+(int n) = 0;
virtual IDate& operator+=(int n) = 0;
virtual IDate& operator++() = 0;
virtual void print(ostream& o)const=0;
;
IDate& createDate(int y, int m, int d);
IDate& createDate(int n);
IDate& createDate(const string s);
inline ostream& operator<<(
ostream& o, const IDate& d)
d.print(o); return o;
class Date:public IDate
int year, month, day;
public:
Date(const string& s);
Date(int n=1);
Date(int y, int m, int d);
Date operator+(int n)const;
Date& operator+=(int n);
Date& operator++();
friend ostream& operator<<(
ostream& o, const Date& d
);
;
IDate类中纯虚函数有返回类型为IDate引用类型,而对应的函数在Date中有返回类型为Date对象的,也有返回为Date对象引用类型的。
不是要求“虚函数用于继承结构层次中的基类与子类。除了基类与子类的函数名必须相同外,连参数类型、个数和顺序都要相同。 ”么?为什么上面不同也可以?
我看的没提到虚函数可以用重载函数代替啊?而且我写的那个要求是从 钱能的 C++程序设计教程(第二版)上摘录下来的,这个程序也是那里面的。
C++中父类和子类的成员函数同名同参数同返回只是父类里面是虚函数,子类没有虚函数限定 有问题吗
这样有什么问题吗?
没有问题,这就是虚函数的作用,子类中可以override(重写)父类中的虚函数,给出子类自己的实现方法,子类中其实省略了父类函数声明前的virtual,子类中加上virtual也是没有问题的,可有可无。 参考技术A 没问题啊,父类里面是虚函数,当调用时子类只会调用自己的函数,不会调用父类的,这就是重载吧 参考技术B 子类中的成员函数也是虚函数。 参考技术C 子类重写父类的方法默认就是虚继承。以上是关于对象类和子类的虚函数返回类型不同?的主要内容,如果未能解决你的问题,请参考以下文章
delphi中覆盖override父类的静态方法和虚函数有啥不同?