C++ 公用继承
2017-08-15 23:31
162 查看
C++的继承方式分为 公用继承,私有继承,保护继承
建立一个派生类时,将基类的继承方式指定为public,则为公用继承。
1 公用继承时,基类的公用成员和保护成员仍然为公用成员和保护成员的属性。
2 基类的私有成员,仍为基类的私有成员,只能用基类的成员函数去引用它,所以派生类的成员函数不能引用基类的私有成员。
访问属性
附上课本上的小例子,切勿眼高手低
#include <iostream>
#include <string.h>
using namespace std;
class Student //声明基类
{
public: // 公用
void get_value()
{
cin>>num>>name>>sex;
}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl;
}
private: //私有
int num;
string name;
char sex;
};
class Student1:public Student //声明派生类
{
public:
void get_value_1()
{
get_value(); //公用继承,所以可以调用基类的公用函数
cin>>age>>addr;
}
void display_1()
{
display(); //公用继承,所以可以调用基类的公用函数
cout<<"age= "<<age<<endl;
cout<<"addr= "<<addr<<endl;
}
private:
int age;
string addr;
};
int main()
{
Student1 stud;
stud.get_value_1();
stud.display_1();
return 0;
}
虽然派生类的成员函数不能访问基类的私有成员,但是可以通过访问基类的公用成员函数,而进一步的输出基类私有成员的值,如display_1()函数调用display函数。
建立一个派生类时,将基类的继承方式指定为public,则为公用继承。
1 公用继承时,基类的公用成员和保护成员仍然为公用成员和保护成员的属性。
2 基类的私有成员,仍为基类的私有成员,只能用基类的成员函数去引用它,所以派生类的成员函数不能引用基类的私有成员。
基类的访问属性 | 继承方式 | 在派生类中的访问属性 |
private | 公用继承 | 不可访问 |
public | 公用继承 | public |
protected | 公用继承 | protected |
#include <iostream>
#include <string.h>
using namespace std;
class Student //声明基类
{
public: // 公用
void get_value()
{
cin>>num>>name>>sex;
}
void display()
{
cout<<"num: "<<num<<endl;
cout<<"name: "<<name<<endl;
cout<<"sex: "<<sex<<endl;
}
private: //私有
int num;
string name;
char sex;
};
class Student1:public Student //声明派生类
{
public:
void get_value_1()
{
get_value(); //公用继承,所以可以调用基类的公用函数
cin>>age>>addr;
}
void display_1()
{
display(); //公用继承,所以可以调用基类的公用函数
cout<<"age= "<<age<<endl;
cout<<"addr= "<<addr<<endl;
}
private:
int age;
string addr;
};
int main()
{
Student1 stud;
stud.get_value_1();
stud.display_1();
return 0;
}
虽然派生类的成员函数不能访问基类的私有成员,但是可以通过访问基类的公用成员函数,而进一步的输出基类私有成员的值,如display_1()函数调用display函数。
相关文章推荐
- C++习题 输入输出--公用继承
- C++公用继承的基本要点
- 第十七周oj刷题——Problem D: C++习题 输入输出--公用继承
- C++ 公用、私有和受保护的继承
- C++ 公用、私有和受保护的继承
- [YTU]_2445(C++习题 输入输出--公用继承)
- 【C++】归纳要点,轻松学会继承
- C++多继承的研究
- 【c++】继承机制中的构造器和析构器
- c++中的继承和组合
- [收集]C++继承:共有,私有,保护
- C++中怎么阻止一个类被继承
- c++之继承与派生
- C++继承与派生习题
- 【C++】继承与派生类
- [C++_7]继承_1
- C++继承中的虚析构函数
- c++三种继承方式
- 谈谈C++继承中的重载,覆盖和隐藏
- c#调用C++写的dll导出类,包含继承,重载等详细介绍(转载)