c++基础003

来源:互联网 发布:网络平台app代理 编辑:程序博客网 时间:2024/06/04 23:20
c++
继承
继承把原有的基础上添加新的功能(方法,属性)代码复用

     在面向对象的编程过程中继承的概念与显示中的继承概念是相似的,就是某一个类继承了另一个类的特性,那么继承的类就称为派生类,被继承的类称为基类,派生类中包含了基类的数据成员和成员函数,同时也有自己的数据成员和成员函数


继承方法:public,private,protected
定义继承:


单继承
class B:public
{
<派生类新定义成员>
};

多继承
class C public A public B
{
<派生类新定义成员>
};

--------------------------------------------------------------------

class Parent
{
public:
Parent(){}
void showinfo(){}
int pcount;
protected:
int pnumber;
private:
int pdata;
};

class Child: public Parent
{
public:
void show()
{
cout<<pcount<<pnumber<<pdata<<endl;
}
};

pdata是私有部分不能打印
========================

构造方法调用及内存分布
1.在创建子类对象的时候首先要创建父对象
2.首先调用父类构造方法,再调用子类构造方法
3如果父类构造方法有参数,那么子类必须显示调用,而且必须在构造方法参数列表上调用
4.析构方法先调用子类,再调用父类


————————————————————————————————————
多继承---可能出现的歧义

定义:
class 子类:继承方法 父类
class child :public parent 
没有写继承方式默认为私有继承

多继承的时候构造方法调用顺序与继承顺序有关,与参数列表无关

环状多继承,出现多个副本的时候可以用虚继承来避免多个父类对象一一解决方案用虚继承

虚函数
在声明前面添加virtual void show();
1.如果一个类中有虚函数那么这个类的对象中包含一个虚表(虚表是在对象的最前面)
2类中的虚函数指针会存储在虚表中
3.如果在子类中有与父同名,同函数,在虚表中会把父类函数覆盖
4.如果子类有个与父类不同的虚函数,虚函数指针会存储在父类虚函数表后面

多态
1.继承
2.父类要有虚函数
3.在子类中重新实现父类的虚函数(在虚表覆盖父类虚函数)
4父类指针调用虚函数
 
     在现实生活中,每个个体接收到相同的信息,翻译不同,在面向对象过程中,也有类似的情况,对与相似的类对象,接收带同一个指令,他们执行的操作笔筒,称为多态性。在面对对象的过程设计中,多态性主要表现在同一个基类继承的不同派生类对象,这对象对同一消息产生不同影响

存虚函数
     1.函数声明virtual  void show()=0; //纯虚函数不需要函数体
     2.有纯虚函数的类,叫抽象类(抽象类是不能被创建对象)
     3.在继承的时候子没有把父类(抽象类)中的纯虚函数全部实现,那么子类也是抽象类

友元:
    友元函数:
    把一个函数声明为一个类的友元函数, 那么在这个函数中可以访问类中的所有成员

    友元类:
    A类, B类    在B类中声明A类为友元类,
    那么A类中的所有成员函数都是B类的友元函数,A类中的所有成员函数可以访问B类中的所有成员 


封装:
     封装在现实生活中的理解就是将某个事物封闭在一个环境中,与外界隔离开来,面向对象编程过程中的封装概念就是将一个类的数据成员和成员函数封闭在一个对象中,每个对象相互对立,互不干扰,只留下一个公开接口与外界进行通讯



    











0 0
原创粉丝点击