相关疑难解决方法(0)

C++中的虚拟继承

我在阅读c ++中的虚拟继承时在网站上发现了这个

使用多重继承时,有时需要使用虚拟继承.一个很好的例子是标准的iostream类层次结构:

//Note: this is a simplified description of iostream classes

class  ostream: virtual public ios { /*..*/ }
class  istream: virtual public ios { /*..*/ }

class iostream : public istream, public ostream { /*..*/ } 
//a single ios inherited
Run Code Online (Sandbox Code Playgroud)

C++如何确保只存在虚拟成员的单个实例,而不管从中派生的类的数量是多少?C++使用额外的间接级别来访问虚拟类,通常是通过指针.换句话说,iostream层次结构中的每个对象都有一个指向ios对象的共享实例的指针.额外的间接级别有轻微的性能开销,但这是一个很小的代价.

我对声明感到困惑:

C++使用额外的间接级别来访问虚拟类,通常是通过指针

任何人都能解释一下吗?

c++ inheritance multiple-inheritance virtual-inheritance object-layout

12
推荐指数
2
解决办法
2538
查看次数