C++继承方式
从基类派生出派生类,派生类继承基类的继承方式有三种:public、protected 和 private。在未指定的情况下编译器会默认继承方式为 protected 或 private 方式。
具体示例可以参考上一节中的例1,在此就不再重新举例了。
【例 1】
本类同样使用上一节中的示例,此时继承方式改为了 protected 继承,我们再来分析一下 codingbook 中类成员的属性问题,具体见下表。
【例 2】
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
1) public继承方式
- 基类中所有 public 成员在派生类中为 public 属性;
- 基类中所有 protected 成员在派生类中为 protected 属性;
- 基类中所有 private 成员在派生类中不可访问。
具体示例可以参考上一节中的例1,在此就不再重新举例了。
2) protected继承方式
- 基类中的所有 public 成员在派生类中为 protected 属性;
- 基类中的所有 protected 成员在派生类中为 protected 属性;
- 基类中的所有 private 成员在派生类中仍然不可访问。
【例 1】
enum language{cpp, java, python,javascript, php, ruby}; class book { public: void setprice(double a); double getprice()const; void settitle(char* a); char * gettitle()const; void display(); private: double price; char * title; }; class codingbook: protected book { public : void setlang(language lang); language getlang(){return lang;} private: language lang; };
本类同样使用上一节中的示例,此时继承方式改为了 protected 继承,我们再来分析一下 codingbook 中类成员的属性问题,具体见下表。
codingbook类成员 | 成员属性 | 来源 |
---|---|---|
price | 不可访问 | 继承自 book 类 |
title | 不可访问 | 继承自 book 类 |
lang | private | codingbook 新增 |
setprice | protected | 继承自 book 类 |
settitle | protected | 继承自 book 类 |
getprice | protected | 继承自 book 类 |
gettitle | protected | 继承自 book 类 |
dispaly | protected | 继承自 book 类 |
setlang | public | codingbook 新增 |
getlang | public | codingbook 新增 |
3) private继承方式
- 基类中的所有 public 成员在派生类中均为 private 属性;
- 基类中的所有 protected 成员在派生类中均为 private 属性;
- 基类中的所有 private 成员在派生类中均不可访问。
【例 2】
enum language{cpp, java, python,javascript, php, ruby}; class book { public: void setprice(double a); double getprice()const; void settitle(char* a); char * gettitle()const; void display(); private: double price; char * title; }; class codingbook: private book { public : void setlang(language lang); language getlang(){return lang;} private: language lang; };同样,我们来分析一下本例中的 codingbook 类中所有成员的成员属性,具体见下表。
codingbook类成员 | 成员属性 | 来源 |
---|---|---|
price | 不可访问 | 继承自 book 类 |
title | 不可访问 | 继承自 book 类 |
lang | private | codingbook 新增 |
setprice | private | 继承自 book 类 |
settitle | private | 继承自 book 类 |
getprice | private | 继承自 book 类 |
gettitle | private | 继承自 book 类 |
dispaly | private | 继承自 book 类 |
setlang | public | codingbook 新增 |
getlang | public | codingbook 新增 |
声明:《C++系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。