(1)一个命名空间可以有好几个同义词或别名,所有别名与命名空间原来的名字等价。
(2)如果我们提供了一个对std等命名空间的using指示而为做任何特殊控制的话,将重新引入使用了多个库而造成的名字冲突问题。
(3)可以从函数的限定名推断出查找名字时检查作用域的次序,限定名以相反次序指出备查找的作用域。
(4)当我们给函数传递一个类类型的对象时,除了在常规的作用域查找外还会查找实参类所属的命名空间。
(5)using声明语句声明的是一个名字,而非一个特定的函数。
(6)using指示将命名空间的成员提升到外层作用域中,如果命名空间的某个函数与该命名空间所属作用域的函数同名,则命名空间的函数将被添加到重载集合中。
(7)多重继承是指从多个直接基类中产生派生类的能力,多重继承的派生类继承了所有父类的属性。
(8)构造一个派生类的对象将同时构造并初始化它的所有基类子对象。
(9)如果一个类从它的多个基类中继承了相同的构造函数,则这个类必须为该构造函数定义它自己的版本。
(10)当一个类拥有多个基类时,有可能出现派生类从两个或更多基类中继承了同名成员的情况。此时,不加前缀限定符直接使用该名字将引发二义性。
(11)虚继承的目的是令某个类做出声明,承诺愿意共享它的基类。
(12)虚派生只影响从指定了虚基类的派生类中进一步派生出的类,他不会影响派生类本身。
(13)虚基类总是先于非虚基类构造,与它们在继承体系中的次序和位置无关。
(14)当只传入一个指针类型的实参时,定位new表达式构造对象但是不分配内存。
(15)调用析构函数会销毁对象,但是不会释放内存。
(16)运行时类型识别(RTTI),使用RTTI必须要加倍小心。可能的情况下,最好定义虚函数而非直接接管类型管理的重任。
(17)我们可以对一个空指针执行dyname_cast,结果所需类型的空指针。
(18)当typeid作用与指针而非指针所指的对象时,返回的结果是该指针的静态编译时类型。
(19)初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象。
(20)成员指针是指可以指向类的非静态成员指针。
(21)一个类可以定义在另一个类的内部,前者称为嵌套类或嵌套类型,嵌套类是一个独立的类,与外层类基本没有什么关系。
(22)嵌套类的名字在外层类作用域中是可见的,在外层类作用域之外不可见。
(23)在嵌套类在其外层类之外完成真正的定义之前,它都是一个不完全的类型。
(24)匿名union是一个未命名的union,并且在右花括号和分号之间没有任何声明。
(25)匿名union不能包含受保护的成员或私有成员,也不能定义成员函数。
(26)类可以定义在某个函数的内部,我们称这样的类为局部类。
(27)局部类的所有成员包括函数在内都必须完整定义在类的内部。因此,局部类的作用域嵌套类相比相差甚远。
(28)局部类内的嵌套类也是一个局部类,必须遵循局部类的各种规定。嵌套类的所有成员都必须定义在嵌套类内部。
(29)位域在内存中的布局是与机器相关的,位域的类型必须是整型或枚举型。
(30)volatile的确切含义与机器有关,只能通过阅读编译器文档来理解。
(31)要想把c++代码和其他语言编写的代码放在一起使用,要求我们必须有权访问该语言的编译器,并且这个编译器与当前的c++编译器是兼容的。
(32)c++从c语言继承的标准库函数可以定义为c函数,但并非必须:决定使用c还是c++实现c标准库,是每个c++实现的事情。
(33)有c++编译器会接受之前的这种赋值操作并将其作为对语言的扩展,尽管从严格意义上来看它是非法的。
(34)链接指示与重载函数的相互作用依赖于目标语言,如果目标语言支持重载函数,则为该语言实现链接指示的编译器很可能也支持重载这些c++的函数。
(2)如果我们提供了一个对std等命名空间的using指示而为做任何特殊控制的话,将重新引入使用了多个库而造成的名字冲突问题。
(3)可以从函数的限定名推断出查找名字时检查作用域的次序,限定名以相反次序指出备查找的作用域。
(4)当我们给函数传递一个类类型的对象时,除了在常规的作用域查找外还会查找实参类所属的命名空间。
(5)using声明语句声明的是一个名字,而非一个特定的函数。
(6)using指示将命名空间的成员提升到外层作用域中,如果命名空间的某个函数与该命名空间所属作用域的函数同名,则命名空间的函数将被添加到重载集合中。
(7)多重继承是指从多个直接基类中产生派生类的能力,多重继承的派生类继承了所有父类的属性。
(8)构造一个派生类的对象将同时构造并初始化它的所有基类子对象。
(9)如果一个类从它的多个基类中继承了相同的构造函数,则这个类必须为该构造函数定义它自己的版本。
(10)当一个类拥有多个基类时,有可能出现派生类从两个或更多基类中继承了同名成员的情况。此时,不加前缀限定符直接使用该名字将引发二义性。
(11)虚继承的目的是令某个类做出声明,承诺愿意共享它的基类。
(12)虚派生只影响从指定了虚基类的派生类中进一步派生出的类,他不会影响派生类本身。
(13)虚基类总是先于非虚基类构造,与它们在继承体系中的次序和位置无关。
(14)当只传入一个指针类型的实参时,定位new表达式构造对象但是不分配内存。
(15)调用析构函数会销毁对象,但是不会释放内存。
(16)运行时类型识别(RTTI),使用RTTI必须要加倍小心。可能的情况下,最好定义虚函数而非直接接管类型管理的重任。
(17)我们可以对一个空指针执行dyname_cast,结果所需类型的空指针。
(18)当typeid作用与指针而非指针所指的对象时,返回的结果是该指针的静态编译时类型。
(19)初始化enum对象或者为enum对象赋值,必须使用该类型的一个枚举成员或者该类型的另一个对象。
(20)成员指针是指可以指向类的非静态成员指针。
(21)一个类可以定义在另一个类的内部,前者称为嵌套类或嵌套类型,嵌套类是一个独立的类,与外层类基本没有什么关系。
(22)嵌套类的名字在外层类作用域中是可见的,在外层类作用域之外不可见。
(23)在嵌套类在其外层类之外完成真正的定义之前,它都是一个不完全的类型。
(24)匿名union是一个未命名的union,并且在右花括号和分号之间没有任何声明。
(25)匿名union不能包含受保护的成员或私有成员,也不能定义成员函数。
(26)类可以定义在某个函数的内部,我们称这样的类为局部类。
(27)局部类的所有成员包括函数在内都必须完整定义在类的内部。因此,局部类的作用域嵌套类相比相差甚远。
(28)局部类内的嵌套类也是一个局部类,必须遵循局部类的各种规定。嵌套类的所有成员都必须定义在嵌套类内部。
(29)位域在内存中的布局是与机器相关的,位域的类型必须是整型或枚举型。
(30)volatile的确切含义与机器有关,只能通过阅读编译器文档来理解。
(31)要想把c++代码和其他语言编写的代码放在一起使用,要求我们必须有权访问该语言的编译器,并且这个编译器与当前的c++编译器是兼容的。
(32)c++从c语言继承的标准库函数可以定义为c函数,但并非必须:决定使用c还是c++实现c标准库,是每个c++实现的事情。
(33)有c++编译器会接受之前的这种赋值操作并将其作为对语言的扩展,尽管从严格意义上来看它是非法的。
(34)链接指示与重载函数的相互作用依赖于目标语言,如果目标语言支持重载函数,则为该语言实现链接指示的编译器很可能也支持重载这些c++的函数。