C++ Primer 有感(命名空间)】的更多相关文章

1.命名空间定义以关键字namespace开始,后接命名空间的名字. 2.命名空间可以在全局作用域或其他作用域内部定义,但不能在函数或类内部定义. 3.定义在命名空间中的实体称为命名空间的成员.像任意作用域的情况一样,命名空间中的每个名字必须引用该命名空间的唯一实体. 4.与其他作用域不同,命名空间可以在几个部分中定义.命名空间由它的分离定义部分的总和构成,命名空间是累积的.一个命名空间的分离可以分散在多个文件中,在不同文本文件中的命名空间定义也是累积的. 5.在命名空间的内部定义的函数可以使用…
1.我们既可以用 using 声明整个空间,也可以声明部分名字. using namespace std; using std::cout; 2.头文件不应包含 using 声明,因为头文件会拷贝到所引用它的文件中去,所以每个使用了该头文件的文件就都会有这个声明. 3.命名空间可以是不连续的. 4.模板特例化必须定义在原始模板所属的命名空间中,和其它命名空间名字类似,只要我们在命名空间中声明了特例化,就能在命名空间外部定义它了. namespace myspace { template <typ…
C++用名称空间来控制名称的作用域: 1不同命名空间的同名变量可以同时存在,不会发生冲突 2命名空间不能出现在代码块中 3我们用作用域运算符::,使用空间名来限定名称,最常用的std::cout 4using 声明和using编译指令: using 使特定的标识符可用例如using std::cout using 编译指令时整个命名空间可用,例如using namespace std 类的自动转换和强制转换: 我们用书中举的例子: class Stonewt { private: ... pub…
1.异常是通过抛出对象而引发的.该对象的类型决定应该激活哪个处理代码.被选中的处理代码是调用链中与该对象类型匹配且离抛出异常位置最近的那个. 2.执行throw的时候,不会执行跟在throw后面的语句,而是将控制从throw转移到匹配的catch,该catch可以是同一函数中局部的catch,也可以在直接或间接调用发生异常的函数的另一个函数中.控制从一个地方传到另一地方,这有两个重要含义:  (1)沿着调用链的函数提早退出.  (2)一般而言,在处理异常的时候,抛出异常的块中的局部存储不存在了.…
C++类的指针成员与其他成员有所不同,指针成员指向一个内存地址,该地址的内存需要我没管理. 我现在分析一下为什么要管理指针成员. 有如下Student类,Student.h如下: [cpp] view plaincopy class Student { public: Student(int *books); virtual ~Student(); int *books; }; Student.cpp如下: [cpp] view plaincopy #include "Student.h&quo…
set容器只是单纯的键的集合,键必须为一.set容器不支持下标操作,而且没有定义maped_type类型.在set容器中,value_type不是pair类型,而是与key_type类型相同的类型. 1.在set中添加元素 set<string> set1; set1.insert("the"); set1.insert("end"); 也可以添加一对迭代器,如下: set1.insert(set33.begin(),set33.end()); 这个方法…
与关联容器相关的模板类型,包含两个数据成员,在utility头文件中定义. pair类型提供的操作: pair<T1,T2> p1; pair<T1,T2> p1(v1,v2); make_pair(v1,v2); p1 < p2; p1 == p2; p.first; p.second; 1.创建和初始化: pair<string,string> name; pair<string,vector<int>> data; 以上全部调用pai…
vector是同一种对象的集合,每个对象都有一个对应的整数索引值.和string对象一样,标准库将负责管理与存储元素相关的类存.引入头文件 #include<vector> 1.vector对象的定义和初始化 vector<T> v1 vector保存类型为T的对象.默认构造函数,v1为空 vector<T> v2(v1) v2是v1的一个副本 vector<T> v3(n,i) v3包含n个值为i的元素 vector<T> v4(n) v4含有…
map是键-值对的集合.map类型通常可以理解为关联数组:可以使用键作为下标获取一个值,正如内置数组一样.而关联的本质在于元素的值于某个特定的键相关联,而并非通过元素在数组中的位置获取. 1.map对象的定义 要使用map对象,则必须包含map头文件.在定义map对象时,必须分别指明键和值得类型 map<string,int> word_count; string为键,int为值 map的构造函数 map<k,v> m;                   //创建一个名为m的空m…
查看普通函数的声明的时候,不可能知道该函数会抛出什么异常,但是在捕获异常的时候要知道一个函数会抛出什么样的异常,以便捕获异常. 异常说明:指定,如果函数抛出异常,抛出的异常将是包含在该说明中的一种,或者是从列出的异常中派生的类型. 1.定义异常说明 异常说明跟在形参表后.一个异常说明在关键字throw之后跟着一个由圆括号括住的形参列表,该列表可能为空或者多个,若为多个,则用逗号分开.例如: void getWork() throw(runime_error);                  …