C++笔记121025

类初步

类定义形如

1 class Matrix{
2 public:
3   //operations on Matrix objects will go here
4 private:
5   vector<double> data;
6 };

重要的是不要遗忘后面的“;“

此外,也可以使用关键词struct替换class定义类。struct从C继承而来,与class的唯一差别在于默认访问标号,struct默认为public,而class默认为private

类成员在定义时不能做初始化。只能在对象定义时调用构造函数初始化。

注意C++中private封装是对类而不是对对象做的。亦即虽然private成员不能被外部访问,但是对象A可以访问对象B的private成员。这一点与java不同。

 

头文件

通常将源代码写在多个文件中,用头文件来做逻辑关联,分别编译。最后链接。

头文件中只能放声明不能放定义,因此头文件中对变量必须加extern关键字,以及放函数声明。但是存在三个例外:类定义,编译时就可以知道值的const对象以及inline函数的定义。const对象之所以可以放在头文件中是因为const变量是文件局部变量。

事实上大部分编译器在编译时会用常量表达式替换const变量,这样就不会占用内存空间。

为避免同一个头文件在一个cpp文件中被多次#include,应该在头文件中加入预编译处理。

形如

1 #ifndef HEAD_H
2 #define HEAD_H
3 // Definition of class, declaration of variable etc..
4 #endif

这称为头文件保护符。注意头文件保护符并不能避免链接时的重定义问题,这就是为什么我们要求头文件中只能放声明的原因。亦即不能认为加入了头文件保护符就可以把定义放在头文件中,这样可以通过编译,但是链接时会报错。

posted @ 2012-10-25 01:27  hilbertan  阅读(201)  评论(0编辑  收藏  举报