C++ primer:命名空间与多重继承

本文详细介绍了C++中的命名空间如何解决命名冲突问题,以及命名空间的定义、作用域和使用策略。同时,文章探讨了多重继承的概念,包括派生类构造函数的调用顺序、基类的访问规则和虚继承的重要性,帮助读者深入理解C++中的这些关键特性。
摘要由CSDN通过智能技术生成

1.库倾向于定义许多全局名字——主要是模板名、类型名或函数名。在使用来这些名字中有一些几乎不可避免地会发自多个供应商的库编写应用程序的时候,生冲突,这种名字冲突问题称为命名空间污染问题。

2.命名空间为防止名字冲突提供了更加可控的机制,个命名空间是一个作用域,通过在命名空间内部定义库中的名字,库的作者(以及用户)可以避免全局名字固有的限制。

3.命名空间定义以关键字 namespace 开始,后接命名空间的名字。命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义。

4.命名空间作用域不能以分号结束。

namespace cplusplus_primer {
class Sales_item { /* ... */};
Sales_item operator+(const Sales_item&,
const Sales_item&);
class Query {
public:
Query(const std::string&);
std::ostream &display(std::ostream&) const;
// ...
};
class Query_base { /* ... */};
}

5.命名空间外部的代码必须指出名字定义在哪个命名空间中:

cplusplus_primer::Query q =
cplusplus_primer::Query("hello");
q.display(cout);

6.像对 std 中定义的命名空间所做的那样,可以编写 using 声明(第 3.1 节)来获得对我们知道将经常使用的名字的直接访问:

using cplusplus_primer::Query;

7.一个命名空间的分离部分可以分散在多个文件中,在不同文本文件中的命名空间定义也是累积的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值