c++菜鸟教程
菜鸟教程中的c++
1. C++类访问修饰符:
public,private(只有类和友元函数可以访问),protected(保护成员变量与私有成员⼗分相似,不同的是保护成员可以在派⽣类中访问);
在类⾥不写访问修饰符,默认是private,但是结构体的默认是public;
2.虚继承(需要理解原理)是解决C++多重继承问题的⼀种⼿段,从不同途径继承来的同⼀基类,会在⼦类中存在多份拷贝。这将存在两个问题:其⼀,浪费存储空间;第⼆,存在⼆义性问题,通常可以将派⽣类对象的地址赋值给基类对象,实现的具体⽅式是,将基类指针指向继承类(继承类有基类的拷贝)中的基类对象的地址,但是多重继承可能存在⼀个基类的多份拷贝,这就出现了⼆义性。
另外多继承(环状继承),A->D, B->D, C->(A,B),例如:
菜鸟教程python函数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. 虚函数,实际上就是⽐如声明了⼀个基类的指针数据,可以将让这个指针指向扩展类的地址,如果当调⽤指针只指向类型的成员函数时,如果想指向到扩展类的成员函数上,则需要使⽤这个虚函数,否则指向的就是基类的成员函数。
原因在于,如果不是虚函数,则是静态绑定的,如果是虚函数,就是动态绑定的,即虚函数位置的是⼀个虚表,只有程序运⾏起来跑起来了,才知道具体指向的类型,才会调⽤相应的⼦类的成员函数。
与这个概念有关的就是析构函数⼀定是虚函数,防⽌调⽤的是基类的析构函数。 这个概念也就是多态。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论