C++ Primer 中文版 学习笔记(一)

第一部分基本语言

第二章变量和基本类型

1、理解C++初始化不是赋值是必要的。

              初始化指创建变量并给它赋初始值,而赋值则是擦除对象的当前值并用新值代替。

2、一个类可以定义几个构造函数,每个构造函数必须接受不同数目或者不同类型的参数。

3、除了用作赋值操作符的左操作数,未初始化变量用作任何其他用途都是没有定义的。

4、可以通过使用extern关键字声明变量名而不定义它。

              1.     extern声明不是定义,也不分配存储空间
              2.     程序中变量可以声明多次,但只能定义一次
              3.     如果声明有初始化式,那么它可被当作是定义,即使声明标记为extern
              4.     因为已初始化的extern声明被当作是定义,所为该变量任何随后的定义都是错误。

5、常量在定义后就不能被修改,所以定义时必须初始化。

            非const变量默认认为extern。要使const变量能够在其他的文件中访问,必须显示地指定它为extern

6、不能定义引用类型的引用,但可以定义任何其他类型的引用。

              1.     初始化是指明引用指向哪个对象的唯一方法。
              2.     规定将普通的引用绑定到const对象是不合法的。
              3.     const引用的意思是指向const对象的引用。

7typedef通常被用于以下三种目的:

                   1.     为了隐藏特定类型的实现,强调使用类型的目的。
                   2.     简化复杂的类型定义,使其更易理解。
                   3.     允许一种类型用于多个目的,同时使得每次使用该类型的目的明确

8、头文件用于声明而不是用于定义。

   例外:

               1.     可定义类。
               2.     可定义值在编译时就已经知道的const对象(默认为定义它的文件的局部变量)。
               3.     可定义incline函数。

9、我们必须保证多次包含同一头文件不会引起该头文件定义的类和对象被多次定义。

#ifndef SALESITEM_H
#define SALESITEM_H
//Definition ofclass and related functions goes here
#endif

10、不要依赖未定义行为

使用了未定义行为的程序都是错误的,即使程序能够运行,也只是巧合。未定义行为源于编译器不能检测到的程序错误或太麻烦以至无法检测的错误。
当程序移植到另一台机器上时,要寻找并更改任何依赖机器相关操作的代码。在未来可以运行的程序中寻找这类问题是一项非常不愉快的任务。

11、c++支持两种初始化变量的形式:复制初始化直接初始化

              直接初始化语法更灵活且效率更高。

12、struct和 class的区别:

Struct中的成员都默认具有public属性;
class 默认为private属性(如不指定类型)。

 

没有更多推荐了,返回首页