200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 虚函数 纯虚函数 虚基类 抽象类 虚函数继承 虚继承

虚函数 纯虚函数 虚基类 抽象类 虚函数继承 虚继承

时间:2021-08-04 17:50:39

相关推荐

虚函数 纯虚函数 虚基类 抽象类 虚函数继承 虚继承

虚函数:虚函数是C++中用于实现多态(polymorphism)的机制。核心理念就是通过基类访问派生类定义的函数。是C++中多态性的一个重要体现,利用基类指针访问派生类中的成员函数,这种情况下使用虚函数,这种情况下采用的是动态绑定技术。

虚函数必须是基类的非静态成员函数,其访问权限可以是protected或public,在基类的类定义中定义虚函数的一般形式:

virtual 函数返回值类型 虚函数名(形参表)

{ 函数体 }

动态绑定:基类指针是调用派生类的中的成员函数还是调用基类中的成员函数要到程序运行时确定。主要要看指针所指向的对象。

纯虚函数:纯虚函数是在基类中声明的虚函数,它在基类中没有定义,但要求任何派生类都要定义自己的实现方法。在基类中实现纯虚函数的方法是在函数原型后加“=0”

virtualvoid funtion1()=0

虚基类、抽象类:包含纯虚函数的类称为抽象类。由于抽象类包含了没有定义的纯虚函数,所以不能定义抽象类的对象。

虚函数继承:

虚函数继承就是覆盖。即基类中的虚函数被派生类中的同名函数所覆盖。 是实现多态的方法。

class parent

{

public:

vitual void foo(){cout < <"foo from parent";};

void foo1(){cout < <"foo1 from parent";};

};

class son:public parent

{

void foo(){cout < <"foo from son";};

void foo1(){cout < <"foo1 from son";};

};

int main()

{

parent *p=new son();

p->foo();

p->foo1();

return 0;

}

其输出结果是:

foo from son,foo1 from parent

虚继承:

解决多重继承中派生类成员函数调用模糊问题。比如类A中有一个函数print(),类B继承A,类C继承A,类D继承类B和类C,这个时候,类D中就有两个print函数,一个是从B继承得到的,一个是从C继承得到的,则,类D的对象调用print函数就会出现print模糊的编译错误。解决办法:类B虚拟继承A。类C虚拟继承A,类D继承B,C时,只拷贝A中的数据成员和函数成员一次,再遇到拷贝时候就忽略了!

虚继承就是为了节约内存的,他是多重继承中的特有的概念。适用与菱形继承形式。

如:类B、C都继承类A,D继承类B和C。为了节省内存空间,可以将B、C对A的继承定义为虚拟继承,此时A就成了虚拟基类。

class A;

class B:public vitual A;

class C:public vitual A;

class D:public B,public C;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。