博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++学习基础九——继承
阅读量:5285 次
发布时间:2019-06-14

本文共 3186 字,大约阅读时间需要 10 分钟。

1.不同于Java中通过extends实现继承,C++是通过:实现的。

2.C++中同样包含public,private,protected三个关键字: 

public关键字表示在任意其他类中可调用该成员。

private关键字表示该成员只能在声明该成员的类中使用。

protected关键字用于继承,可在本类中调用声明为protected的成员,也可以在子类中通过子类对象调用,而不能通过父类对象调用。

3.virtual关键字表示该函数可以被子类继承并重写。

如果父类的成员函数声明为virtual,则子类可以重新定义该成员函数,重新定义时去掉virtual关键字。

如果父类的成员函数是普通的函数,则子类继承之后不能重新定义该函数。

4.代码片段如下:

1 #include 
2 #include
3 4 using namespace std; 5 6 class Item_base 7 { 8 public: 9 Item_base(const string &is,double p):isbn(is),price(p){}10 string book()11 {12 return isbn;13 }14 virtual double calMoney(int c)15 {16 return c * price;17 }18 private:19 string isbn;20 protected:21 double price; 22 };23 24 class Bulk_item : public Item_base25 {26 public:27 Bulk_item::Bulk_item(const string &is,double p,int c,double dis):28 Item_base(is,p),min_py(c),discocunt(dis){}29 double calMoney(int c)30 {31 cout<
<<"子类"<
min_py)33 {34 return c * price * discocunt;35 }36 else37 {38 return c * price;39 }40 } 41 void test()42 {43 cout<
<<"子类测试!!"<
calMoney(20)<

 5.C++中的继承不同于Java,C++支持公有继承、私有继承和受保护的继承。

公有继承又称为接口继承,私有继承和受保护继承又称为实现继承。最常用的继承方式是公有继承。

私有继承是指将父类中的public,protected的成员变为private。

受保护继承是指将父类中public的成员变成protected的。

public 继承:

1 class A 2 { 3 public : 4     A() 5     { 6         a = 10; 7         b = 20; 8         c = 30; 9     }10     int a;11 protected:12     int b;13 private:14     int c;    15 };16 17 class B1 : public A18 {19 public :20     void test()21     {22         cout<<"公有继承  "<<<" , "<<

private继承:

1 class B2 : private A 2 {  3     //私有继承将A中public protected的成员变为private  4 public : 5     void test() 6     { 7         cout<<"私有继承  "<<<" , "<<
protected继承:
1 class B3 : protected A2 {3 //受保护继承将A中public的成员变为protected4 public:5     void test()6     {7         cout<<"受保护继承  "<<<" , "<<

6.可以通过修改继承访问方式实现去除个别成员(关键字是using)。

例如父类A中public 的成员,通过私有继承时,父类的public成员变为私有的,可以通过using A::a;语句实现公有。

1 class B2 : private A 2 {  3     //私有继承将A中public protected的成员变为private  4 public : 5     using A::a2;//将a2变为public 的  6     void test() 7     { 8         cout<<"私有继承  "<<<" , "<<

7.默认继承访问级别:

(1)class默认的继承是私有的,其内的成员默认的也是私有的。

(2)struct默认的继承是公有的,其内的成员默认的也是公有的。

(3)C++中除了默认的继承访问级别不同,class和struct是相同的。

1 class D : A//默认的继承是private 2 {3     int a;//默认的成员变量是private 4 };5 6 struct E : A//默认的继承是public 7 {8     int a;//默认的是public    9 };
8.整体代码如下:
1 class A 2 { 3 public : 4     A() 5     { 6         a = 10; 7         b = 20; 8         c = 30; 9         a2 = 40;10     }11     int a;12     int a2; 13 protected:14     int b;15 private:16     int c;    17 };18 19 class D : A//默认的继承是private 20 {21     int a;//默认的成员变量是private 22 };23 24 struct E : A//默认的继承是public 25 {26     int a;//默认的是public    27 };28 29 class B1 : public A30 {31 public :32     void test()33     {34         cout<<"公有继承  "<<<" , "<<
后续更新中....
posted on
2016-09-17 22:55 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/calence/p/5880013.html

你可能感兴趣的文章
vue router
查看>>
第三次实训作业
查看>>
git
查看>>
FastClick 导致聚焦有问题
查看>>
第二百三十八节,Bootstrap输入框和导航组件
查看>>
js重写原型对象
查看>>
$this的用法
查看>>
linux如何安装java环境
查看>>
Android中gravity的含义
查看>>
求大神给解决下,向已有的xml文件写入数据,但不覆盖文件存在的内容
查看>>
深入理解java嵌套类和内部类
查看>>
Linux守护进程的编程实现
查看>>
C语言指针的初始化和赋值
查看>>
JavaScript 输出
查看>>
python 函数(2)
查看>>
Python学习笔记1:python简介、输入输出、循环条件
查看>>
python学习笔记5:装饰器
查看>>
Android 开发环境配置
查看>>
skiing
查看>>
wxwidgets demo
查看>>