博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C++ Primer 笔记 Chapter 1,2

Posted on 2010-08-16 01:05  KurtWang  阅读(280)  评论(0编辑  收藏  举报
  1. 标准库4个IO对象:cin cout cerr clog
  2. 基本变量(int等)需要进行初始化,否则是一个未知值
  3. 编译错误类型:
    1. 语法错误:例如括号没对齐
    2. 类型错误:传递了字符串给整数参数
    3. 声明错误:使用的名字在使用前没有声明
  4. 读入未知数目的输入
      int sum=0, value;
      while(std:cin>>value)
      sum+=value;
      std::cout<<sum<<endl;
      当我们使用istream对象作为条件,结果是测试流的状态,如果流是有效地(也就是说,如果读入下一个输入是有可能的)那么测试成功。遇到文件结束符或遇到无效输入,如读取了一个不是整数的值,则istream对象是无效的。
  5. 内置类型
    整型 字符型 char(8bit) wchar_t(16bit)  
      布尔型 bool    
      整数型 short(16bit) int(32bit) long(32bit)
    浮点型 单精度浮点型 float(32bit) 6位有效数字  
      双精度浮点型 double(64bit) 10位有效数字  
      扩展精度浮点型 long double(96bit or 128bit) 10位有效数字  

    越界值赋值,会取该值对最大值求模后的值(e.g. 336赋给8位的unsigned char,实际值委336%256=80)。

    例题:unsigned short num = 10000; num实际值是? 答案:34464

  6. 字面值常量
    1. 20 (十进制) 024(八进制) 0x14(十六进制)
    2. 字面值常量后加u表示unsigned,加L表示long,无short的字面值常量。
    3. 默认为double,后加f表示float,后加L表示long double
    4. 字符字面值前加L表示宽字符
    5. \ooo,ooo表示三个八进制数,用来定义转义字符,e.g. \062=’2’
  7. C++是一门静态类型语言(也称强类型语言,同类的有Java),强类型语言在编译时会做类型检查(比较:javascript 弱类型语言)
  8. 变量名组成:字母,数字,下划线。变量名大小写敏感
  9. 定义变量
    1. 直接初始化:int ival(1024);
    2. 复制初始化:int ival = 1024; (复制初始化和赋值不同,赋值是擦除对象的当前值并用新值代替,初始化是创建变量并给他赋初值)
    3. 直接初始化更好
    4. 内置类型变量的初始化:函数体外定义的都初始化为0,函数体内不初始化
    5. 类类型变量的初始化:调用默认构造函数
  10. 声明和定义
    1. 声明:表明变量的类型和名字,通过extern关键字声明变量而不定义它。为了说明变量定义在其他地方。(场景:a.cpp声明并定义变量n,b.cpp中声明extern n,这样在b文件里也能访问到变量n
    2. 定义:也是声明,为变量分配存储空间,并指定初始值。在一个程序中,变量有且仅有一个定义。
  11. const对象
    1. 定义时必须初始化。
    2. const变量默认为文件的局部变量(而非const变量默认为extern),指定const变量为extern,才可在其他文件中访问。 file1.cc: extern const int bufSize = 1; file2.cc: extern const int bufSize;
  12. 引用是复合类型
    1. 声明时必须初始化,而且必须是同类型的对象。
      1. int ival=1024; int &refVal = ivale;(对)
      2. int &refVal2; (错,未初始化)
      3. int &refVal3 = 10;(错,类型不对)
    2. 引用是别名,不可更改绑定到其他对象
    3. const引用:指向const对象的引用,const引用可以初始化为不同类型的对象或右值(非const引用不行),推荐使用const引用作为函数参数(可接受字符串常量)。
  13. 枚举:第一个成员为0,以后递增,也可以显示的定义某个枚举常量的值,之后的枚举常量以一递增。
  14. struct和class:struct第一个访问标号钱的任何成员都隐示的指定为public,class则为private
  15. 避免多重包含:
#ifndef XXXXX
#define XXXXX
#endif