- 两个 :: 表示全局的前面没有更上任何的东西。
- cpp 指令 c pre process 预处理
- g++ c.cpp --save-temps保存所有中间文件
int a;叫做定义
extern int a;叫做声明;
-Wall 输出所有可能的warring。 - 在makefile 中 -D_MY_H_表示 #define MY_H
函数属于类,而不是属于类的对象。
变量属于对象
int i = 1;
printf("%p",&i);
表示输出地址。
g++ -m32 以32位编译
构造函数和析构函数没有返回值
new 会管理一块数据表,包含首地址和地址空间。
delete r;如果r是数组,那么会把所有的空间回收但是,析构函数只做了一次。
delete p;如果p 是 null,那么并不会发生任何事情。
c++的private,编译的时候才会检查 对于类,而不是对于对象。
编译完后,仍然有机会访问,类私有成员。
defaultvalue 最好不要用,软件工程不符合。
inline 在声明和定义都要加上。
inline 最好就放在inline
宏是不能做类型检查的,inline 会做类型检查。
平凡调用的函数 --》 inline
递归函数 --》 not inline
动态绑定 和 静态绑定
这个涉及到virtual 。
多态性只有指针或者是引用才会有用。否则是没有用的。
C++ 里面 圆括号和赋值是等价的。
似乎默认拷贝构造函数就会简单的赋地址。
任何对象做过一次构造,其他的就会是赋值。
不管有用没有,插插插写下三个函数
virtual ~
default construct
copy struct
如果不想要拷贝,使用私有的。
全局和static 在于
可不可以使用extern访问到。
静态成员变量在类里面相当于声明而不是定义所以要有一个在类外的定义。
为什么类外定义的时候不能加上static,因为,好像类的定义相违背,类就是有的时候要给外面的人用的。
初始化列表只能对非静态成员做初始化,不能对非静态成员做初始化。
静态变量不能访问this
异常,try catch throw, 扔出异常捕获异常。就是这么简单。
catch(...) 捕捉任何异常。 但是拿不到异常对象。
try catch 一般在通信里面
void func () : throw() 抛出所有异常
:throw(a,b) 抛出ab对象的一样
不抛出异常。
---------------------------我的天空里没有太阳,总是黑夜,但并不暗,因为有东西代替了太阳。虽然没有太阳那么明亮,但对我来说已经足够。凭借着这份光,我便能把黑夜当成白天。我从来就没有太阳,所以不怕失去。
--------《白夜行》