标签:
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