重温C++ —— Chapter 1&2 变量和基本类型


C++的主要设计目标之一就是允许程序员自定义类型,而且这些类型和内置类型一样易于使用。

掌握C++的第一步是学习语言的基本知识和 标准库

wchar_t 宽字符型 占16个位,用于扩展字符集如中文、日文

命名习惯最重要的是保持一致。确定了命令方式,就要 始终如一的使用下去。

C++中初始化不是赋值,初始化的语法更灵活且效率更高。下面的语句都是初始化。
int ival(1024);      // direct-initialization
int ival=1024;      // copy-initialization



const对象默认为文件的局部变量。(c++为什么要这么设计?请继续往下看,跟头文件的include相关)
非const对象默认为extern全局变量。要使const变量能够在其他文件中被访问,必须显示的指定它为extern。

非const引用只能绑定到与该引用同类型的对象;
const引用可以绑定到不同但相关类型的对象,或绑定到右值
例子:
const int ival = 1024;
int ival2 = 2048;
const int &regVal = ival;        //OK
int &ref2 = ival;                       //error
int &ref3 = ival2;                     //OK

int &ref4 = 10;                         //error
const int &ref5 = 10;               //ok



第一个枚举成员默认赋值为0,后面的每个枚举成员都比前面的枚举成员大1.
枚举成员是常量,用来初始化枚举成员的值必须是一个 常量表达式
常量表达式——编译器在编译是就能够计算出结果的整型表达式。

// point2d=2, point2w=2, point3d=3, point3w=4
enum Points { point2d=2, point2w,
                         point3d=3, point3w};



定义类时,通常先定义类的接口,即该类所提供的操作。通过这些操作,可以决定该类完成其功能所需要的数据。

struct定义的也是类,和 class定义的区别只是默认访问级别。对class定义的类来说,默认访问级别是private,struct是public。

编译头文件需要时间,为了提高效率,有些c++的实现支持 预编译头文件??(VC是支持的,g++呢?)

因为 头文件被包含在多个源文件中,所以 不应该含有变量或函数的定义。但是有 三种情况例外
1)定义类
2)值在编译时就已知的const对象
3)inline函数

值在编译时就已经确定的const对象之所以可以定义在头文件中,原因就是const对象默认是文件的局部变量。
这样每个包含该头文件的源文件都有了自己的const变量,其名称和值都是一样的。

const变量用常量表达式初始化时,大部分编译器都会用相应的常量表达式来替换这些const变量的使用。所以,实际中 const变量是不占存储空间的

你可能感兴趣的:(C++)