得空看一下
2021-01-03 10:38
采纳率: 40%
浏览 115

子类继承父类,同名成员函数在父类中是public公共属性,但是在子类中是private私有属性。

父类:public: virtual void print()  虚函数
子类:private:void print()   私有成员函数
那么为什么通过Base *s2=new Son;   s2->print();  可以调用子类的私有成员函数?

#include<iostream>
using namespace std;
#include<string>
//父类
class Base{
public:
	virtual void print(){
	cout<<"Base print"<<endl;
	}
};
//子类
class Son:public Base{
	void print(){
	cout<<"Son print"<<endl;
	}
};

void test01(){
	Son s;
	//s.print();//报错,成员方法已经覆盖了

	s.Base::print();

	Son *s1=new Son;
	//s1->print();//报错,

	Base *s2=new Son;
	s2->print();

}

void main(){
	test01();
	system("pause");
}

3条回答 默认 最新

相关推荐 更多相似问题