Chapter 28.命名空间、多重继承和虚继承

命名空间

using声明
eg:
using std::list;//推荐
using指示
eg:
using namespace std;

防止命名空间污染,可不连续
eg:
namespace [NameSpaceName]
{
	//自成一域,在[NameSpaceName]这个命名空间中
}
命名空间可嵌套
内部的成员会把外部的同名成员屏蔽
eg:
namespace A
{
	int a;
	namespace B
	{
		int a;//hide A::a whthin B
	}
}
访问如下:
A::a;
A::B::a;
匿名命名空间
eg:
namespace local
{
	//相当于一个局域作用域
	//可以取代static成员,使成员在文件外不可见
	namespace 
	{
		int i;
	}
}
local::i=42;

多重继承

eg:
class Bear : public ZooAnimal
{


};
class Panda : public Bear, public Endangered
//派生列表决定构造/析构顺序,先看Bear,Bear如果有基类就先ZooAnimal,再Bear,再下一个派生列表成员Endangered
{
	Panda(std::string name,bool on Exhibit)
	:[Bear(...),]Endangered(...)
	{
		
	}
};
构造顺序
ZooAnimal→Bear→Endangered→Panda
析构顺序
ZooAnimal←Bear←Endangered←Panda

多重继承下的虚函数、复制控制类作用域略

虚继承

应用于一个基类多次在派生层次中出现,但只继承一个共享的基类子对象
共享的基类子对象称为虚基类
eg:
class istream : public virtual ios{};
class ostream : public virutal ios{};
eg:
class Bear : virtual public  ZooAnimal{};//Bear科
class Raccoon : public virtual ZooAnimal{};//Raccoon科
class Panda : public Bear, public Raccoon, public Endangered{}
构造顺序
先是虚基类→再按上面多重继承的顺序来
eg:
class Character{};
class BokkCharacter : public Charracter{};
class ToyAnimal{};
class TeddyBear : public BookCharacter, public Bear, public virtual ToyAnimal{};//其中Bear有ZooAnimal这个虚基类
顺序如下:
ZooAnimal
ToyAnimal
Character
BokkCharacter
Bear
TeddyBear
析构相反
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值