c++ 菜鸟教程

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hit_shaoqi/article/details/80725498

菜鸟教程中的c++

1. C++类访问修饰符:

public,private(只有类和友元函数可以访问),protected(保护成员变量与私有成员十分相似,不同的是保护成员可以在派生类中访问);

在类里不写访问修饰符,默认是private,但是结构体的默认是public;

2. 虚继承(需要理解原理)是解决C++多重继承问题的一种手段,从不同途径继承来的同一基类,会在子类中存在多份拷贝。这将存在两个问题:其一,浪费存储空间;第二,存在二义性问题,通常可以将派生类对象的地址赋值给基类对象,实现的具体方式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在一个基类的多份拷贝,这就出现了二义性。

另外多继承(环状继承),A->D, B->D, C->(A,B),例如:

class D{......};
class B: public D{......};
class A: public D{......};
class C: public B, public A{.....};

这个继承会使D创建两个对象,要解决上面问题就要用虚拟继承格式

格式:class 类名: virtual 继承方式 父类名

class D{......};
class B: virtual public D{......};
class A: virtual public D{......};
class C: public B, public A{.....};

虚继承--(在创建对象的时候会创建一个虚表)在创建父类对象的时候

A:virtual public D
B:virtual public D

3. 虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。

我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函数,这种操作被称为动态链接,或后期绑定

C++多态意味着调用成员函数时,会根据调用函数的对象的类型来执行不同的函数;

形成多态必须具备三个条件:

    1、必须存在继承关系;

    2、继承关系必须有同名虚函数(其中虚函数是在基类中使用关键字Virtual声明的函数,在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数);

    3、存在基类类型的指针或者引用,通过该指针或引用调用虚函数;

4. 虚函数,实际上就是比如声明了一个基类的指针数据,可以将让这个指针指向扩展类的地址,如果当调用指针只指向类型的成员函数时,如果想指向到扩展类的成员函数上,则需要使用这个虚函数,否则指向的就是基类的成员函数。

原因在于,如果不是虚函数,则是静态绑定的,如果是虚函数,就是动态绑定的,即虚函数位置的是一个虚表,只有程序运行起来跑起来了,才知道具体指向的类型,才会调用相应的子类的成员函数。

与这个概念有关的就是析构函数一定是虚函数,防止调用的是基类的析构函数。 这个概念也就是多态。


猜你喜欢

转载自blog.csdn.net/hit_shaoqi/article/details/80725498