返回首页 - Notes - 2011

C++ 基础语法拾遗


C++ 字符串变量的几种声明形式:

  1. string str = "Ruchee";
  2. string str("Ruchee");
  3. string str(5, '9'); 相当于 string str = "99999";。注意,第二个参数只能是字符

const 修饰的变量默认情况下不能被其他文件访问,除非其定义时使用了 extern 修饰

而其他普通变量,默认就可以被其他文件访问,也就是说非 const 变量默认就是隐含 extern 修饰符的

  1. const int num;:不能被其他文件访问
  2. extern const int num;:可以被其他文件访问,引用时也使用 extern const int num

using namespace std; 是个危险的声明,要尽量少用,宁可使用 std:: 手动指定变量所属的命名空间

using 既可以引入整个命令空间,也可以引入单独的符号,如 using std::string;using std::cin;

有一点需要注意,在头文件中必须总是使用完整的符号名,不能通过 using 引入的命名空间而使用简写符号


C++ 当作 false 处理的三种情况:0-0.0'\0',其他情况都为 true,包括空字符串 ""'0'

C++ 引入了 andornot 三个逻辑操作符,作用等同于 &&||!,引入这三个单词的原因是防止误写成 &|


标准库定义的四个 IO 对象:cincoutcerrclog

输出操作符的返回值是输出流本身,所以 std::cout << 1+2 << std::endl; 可以写成 (std::cout << 1+2) << std::endl;

输入操作符返回的也是输入流本身,如 std::cout << (std::cin >> a >> b);

std::endl 称为 操作符,其在输出换行效果的同时刷新与设备相关联的缓冲区


由于 char 实际上有 普通charunsigned charsigned char 三种类型,而编译器如何选择是未定义的,所以不要把 char 类型作为计算类型来使用,容易出问题

对于浮点数的选取,使用 double 类型基本上不会有错,应优先选用 double,而不是 floatlong double


常用字面值前后缀

  1. u:unsigned,如 128u
  2. L:long,如 12L
  3. uL:unsigned long,如 20uL
  4. f:float,如 3.1415f
  5. L:wchar_t,如 L'a'

如果定义变量时不赋初值,对于内置类型而言,在函数体外定义的变量都会初始化为 0,而在函数体内定义的变量則不会初始化,包含 main 函数

对于 string 这样的类类型,其提供了默认构造函数,所以总是会初始化为空字符串,但也有些类类型没有提供默认构造函数

定义变量的同时进行初始化,这总会是一个好的习惯

C++ 推荐将变量或对象定义在首次使用它的地方,而不是像 C 一样全部定义在头部


枚举的使用

  1. 先定义一个枚举结构:enum em_name {Mon, Tue, Wed, Thu, Fri, Sat, Sun};
  2. 再用这个枚举定一个枚举变量:em_name day = Tue;
  3. 这样变量 day 的值就是 1

枚举值默认从 0 开始,也可以使用在定义时自定义赋值,允许存在相同的枚举值

enum em_name {a = 2, b, c = 3, d};,这样 a == 2b == 3c == 3d == 4


date : 2011-08-24、2012-02-19、2012-02-22、2012-03-18、2012-03-28、2012-03-31、2012-04-01