c++ 中static final abstrace virtual

来源:互联网 发布:2s19自行榴弹炮知乎 编辑:程序博客网 时间:2024/05/20 19:49

final 是常量,不变的。
1、final的成员变量不能改变。
2、final的局部变量不能改变。
static 是静态变量,它在编译时系统就分配内存,程序结束时才释放。
1、在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在类加载的时候被创建并初始化(只被创建初始化一次),对于该类的所有对象来说,staitic成员变量只有一份。
2、用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非静态的成员。
3、可以通过对象引用或类名访问静态成员。也就是说即可使用对象引用也可使用类名来访问静态的成员变量和成员方法。

正常创建子类对象时:
构造函数从父类到子类
析构函数从子类到父类

Animal* pa = new Dog();
如果不加两个virtual,第二步调用的将是Animal的foo()函数,第三步将只会调用Animal的析构函数(看左边)
加了virtual看右边,第二步调用的将是Dog的foo()函数,析构函数将会先调用子类的再调用父类的
virtual的继承性
只要基函数定义了virtual,继承类的该函数也就具有virtual属性,即 GrandFather Father Son同时定义virtual void fun()与GrandFather一个定义virtual void fun效果是一样的。
表示虚拟继承,和普通继承是C++的两种继承方式。 例如B1、B2 继承A 而C多重继承B1、B2 如果普通继承则C包含两份A的拷贝,分别来自于B1、B2 而虚拟继承则只包含一份A的拷贝

c++中存在多重继承:
private:该类的函数和其友元函数
public:该类函数和其友元函数和子类的函数
public:该类的函数和其友元函数和子类函数和该类的对象

abstrace类中必有纯虚函数,virtual=0,不能定义对象
含有纯虚函数的抽象类不能被实例化,它必须得有子类。子类重写了它的纯虚函数之后,才能够实例化。

C++中,由virtual实现多态。除多态外,virtual有两个特殊用法:
1、虚基类(Virtual base class)
为解决多重继承时的二义性提出来的。使用方法:
class B :virtual public A
class C :virtual public A
class D: public B, public C
Abstract class
2、纯虚函数
含有纯虚函数的类叫做抽象类。纯虚函数如下:
void virtual foo() = 0;

0 0
原创粉丝点击