C++学习之继承与派生(一)

原创 2018年04月17日 19:01:08
一. 概念:
        继承是类和类之间的关系,与现实中的继承相似,可以理解为一个类从另一个类获取成员变量和成员函数的过程。
        继承后的类称为派生类,被继承的类称为基类(或父类),派生类除了拥有基类的成员,还可以定义自己的新成员。

二. 继承权限:
        (1)public 继承:
                基类:公有成员---继承后--->派生类:公有属性
                基类:保护成员---继承后--->派生类:保护属性
                基类:私有有成员---继承后--->派生类:不可用
        (2)protected 继承:    
                基类:公有成员---继承后--->派生类:保护属性
                基类:保护成员---继承后--->派生类:保护属性
                基类:私有有成员---继承后--->派生类:不可用
           (3)prvate 继承:    
                基类:公有成员---继承后--->派生类:shi'y属性
                基类:保护成员---继承后--->派生类:保护属性
                基类:私有有成员---继承后--->派生类:不可用

三.本人写的几个程序:
(1).可以由以下程序结果可得出结论:
                 程序先打印   hello Base,再打印  hello Drrey,说明继承是先调用基类的构造函数,再构造派生类的构造函数,而                     析构函数调用顺序与构造函数调用的顺序相反,是先调用派生类的析构函数再调用基类的析构函数。    
                    另外,打印了派生类所占内存大小可知道派生类占内存大小为基类的数据成员和自己的数据成员大小之和。       


#include<iostream>
using namespace std;
class Base
{
 public:
  int m_a;
  void print1()
  {
   cout<<"hello base"<<endl;
   
  
  }
};
class Drrey : public Base
{
public:
 int m_b;
 void print2()
 {
  cout<<"hello Drrey"<<endl;
  
 }
};
int main()
{
 Drrey d;
 d.print2();
 d.print1();
 cout<<sizeof(Drrey)<<endl; 
 return 0;
 }
        

(2)多继承的构造函数与析构函数调用顺序:
        由程序知道其调用顺序与单继承相似,在调用某一派生类构造函数前都会先调用一次基类的构造函数,而析构函数也是先析构派生类,最后是基类调用析构函数。

                

#include<iostream>
#include<cstring>
using namespace std;
class animal
{
 public:
  int m_age;
  animal(int age);
};
animal::animal(int age)
{
 m_age=age;
 cout<<"consetor"<<endl;
}
class Brid:public animal
{
 public:
  int m_high;
  Brid(int a,int high);
};
Brid::Brid(int a,int high) : animal(a)
{
 cout<<"111111"<<endl;
 m_high=high;
}

class Fish:public animal
{
 public:
  int m_sudu;
  Fish(int a,int sudu);
};
Fish::Fish(int a,int sudu):animal(a)
{
 cout<<"22222"<<endl;
 m_sudu=sudu;
}
class witBrid:public Brid,public Fish
{
 private:
  char *name;
 public:
  witBrid(int a,int b,int c,char *s);
 
};
witBrid::witBrid(int a,int b,int c,char *s) :Brid(a,b),Fish(a,c)
{
 cout<<"3333"<<endl;
 strcpy(name,s);
}

int main()
{
 witBrid s1(3,100,30,"hh");
 
 return 0;
}

CTI的典型应用之三

CTI的典型应用之三◆ 电话语音卡 黄至周  电话语音卡,确切地说,应称为“电脑与电话语音处理卡”,作为公共电话网与电脑的接口设备,近年来在中国通讯市场中异军突起,正日益成为发展最快,应用最广的通讯产...
  • tchaikov
  • tchaikov
  • 2000-12-20 17:11:00
  • 780

浅析C++继承与派生

测试环境: Target: x86_64-linux-gnu gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2.1)  定义 要分析继承,首先...
  • qq_33724710
  • qq_33724710
  • 2016-06-11 10:44:07
  • 4221

C++继承与派生的异同点

C++继承与派生的异同点 在C++中,面向对象有三大特性:封装、继承、多态。今天主要是想写点C++有关继承与多态的内容。 1、基本概念 类的继承是一个新的类从已有的类那里得到已有的特性; 类的派...
  • Jinlong_Xu
  • Jinlong_Xu
  • 2016-10-31 22:01:02
  • 998

C++ 什么是继承和派生

这篇博文对C++的继承和派生将的非常好。         http://blog.csdn.net/insistgogo/article/details/6645215        ...
  • helainthus
  • helainthus
  • 2016-05-19 10:36:31
  • 580

C++面向对象程序设计——继承与派生

什么是继承与派生: 在C++中可重用性是通过“继承”这一机制来实现的,因此继承是C++的一个重要的组成部分。 声明派生类的一般形式为: class 派生类名 : [继承方式] 基类名 {      派...
  • qq_26816417
  • qq_26816417
  • 2017-03-14 14:04:42
  • 651

C++中的多态和派生继承

本文分别节选转自: http://blog.csdn.net/w3031213101/article/details/5420486 http://www.cnblogs.com/fzhe/arch...
  • jasonsungblog
  • jasonsungblog
  • 2015-10-11 23:08:10
  • 865

C++之单继承

单继承定义:从一个基类中派生的继承称为单继承。也可以说,单继承的派生类只有一个基类。在单继承中,一个基类可以生成多个派生类,但是每个派生类只有一个基类。       单继承派生类的定义格式:   ...
  • erlian1992
  • erlian1992
  • 2015-03-09 20:52:32
  • 1074

C++中继承与派生是如何实现的?

面向对象编程的主要目的之一就是提供可重用的代码,强调可重用性。当我们在面临一个大的工程的时候,一般都会重用以前的代码,首先我们使用现有的代码可以节省编码时间,我们称重复的编码为重复的造轮子,重复的代码...
  • lidiya007
  • lidiya007
  • 2016-10-10 16:50:33
  • 714

c++ 类的继承与派生 知识点总结及例子

c++ 类的继承与派生 一、基本概念 1、类的继承,是新的类从已有类那里得到已有的特性。或从已有类产生新类的过程就是类的派生。原有的类称为基类或父类,产生的新类称为派生类或子类。 ...
  • wyl4138
  • wyl4138
  • 2016-05-19 08:46:12
  • 578

C++ 类的派生和继承

1.outline已有类派生出新的类,新的类继承了其原有类的特征1). 添加新的数据 2).添加新的功能 3).修改类的方法 ··· 从一个类派生出另一个类时,原始类称为基类,继承类称...
  • linglongqiongge
  • linglongqiongge
  • 2016-09-06 13:27:07
  • 1015
收藏助手
不良信息举报
您举报文章:C++学习之继承与派生(一)
举报原因:
原因补充:

(最多只允许输入30个字)