问题一:
// 父类
class
{
public:
void print() { printf("\nMy name is Parent!"); };
};
//派生类
class NewClass:public Parent
{
public:
void print() { printf("\nMy name is NewClass!"); };
}
main()
{
Parent p;
NewClass nc;
p.print ();
//此处输出: My name is Parent!
nc.print();
//此处输出: My name is NewClass!
}
书上说由于NewClass 重载了父类Parent的成员函数print。
提问:重载在c++中不是用参数的个数和类型来区别的吗,这里叫做重载正确吗?
那么覆盖又是什么概念呢? 多态呢?区别在什么地方啊?
// 父类
class
{
public:
void print() { printf("\nMy name is Parent!"); };
};
//派生类
class NewClass:public Parent
{
public:
void print() { printf("\nMy name is NewClass!"); };
}
main()
{
Parent p;
NewClass nc;
p.print ();
//此处输出: My name is Parent!
nc.print();
//此处输出: My name is NewClass!
}
书上说由于NewClass 重载了父类Parent的成员函数print。
提问:重载在c++中不是用参数的个数和类型来区别的吗,这里叫做重载正确吗?
那么覆盖又是什么概念呢? 多态呢?区别在什么地方啊?
如果定义这个函数为虚,parent p = new newclass后,p.print()将会输出实际的函数(nc类的print(),输出My name is NewClass!体现了多态性.