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 ®Val = 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变量是不占存储空间的。