标签:
class Libarary_materials {...}; class Book : public Library_materials {...}; class Rental_book : public Book {...};C++也支持多重继承:
class iostream: public istream, public ostream {...};甚至,继承关系也可以指定为虚拟:
class istream : virtual public ios {...} class ostream : virtual public ios {...}在虚拟继承的情况下,base class不管在继承串链中被派生多少次,永远只会存在一个实体,例如iostream之中就只有virtual ios base class的一个实体。
X foobar() { X xx; X *px = new X; // foo()是一个virtual function xx.foo(); px->foo(); delete px; return xx; }这个函数有可能在内部被转化为:
// 可能的内部转换结果 // 虚拟C++码 void foobar(X &_result) { // 构造 _result // _result 用来取代 local xx... _result.X::X(); // 扩展 X *px = new X; px = _new(sizeof(X)); if (px != 0) px->X::X(); // 扩展xx.foo() 但不使用virtual机制 // 以_result取代xx foo(&_result); // 使用virtual 机制扩展px->foo() (*px->vtbl[2])(px); // 扩展delete px; if (px != 0) { (*px->vtbl[1])(px); _delete(px); } // 不需使用named return statement // 不需要销毁local object xx return; }没有创建临时变量对象,也不需要销毁临时对象。
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/yiranant/article/details/47109049