类和结构体:
类默认的是私有的
结构体默认的是公有的
内联函数:
内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。
同一个类的所有对象共享同一组类方法,即每种方法只有一个副本
构造函数&析构函数:
默认构造函数:当且仅当没有定义任何构造函数的时候,编译器会提供默认构造函数
也就是说,如果想定义一个构造函数,就必须额外提供一个默认构造函数,否则
Class object;类似这样的定义对象的操作就会出错。
创建对象数组的时候会(必须)调用默认构造函数
构造函数是可以重载的,因为可以定义不同的参数列表来创建一个对象
定义默认构造函数的方式有两种:
1. 构造函数参数提供默认值
2. 重载编译器提供的没有参数的默认构造函数
析构函数:
如果在构造函数里面使用了new来申请内存,则它将主流在栈内存或者自由存储区中,那么析构函数会负责delete掉;
但是如果构造函数没有动态申请内存,那么定义析构函数什么都不用做;
如果是静态的内存,应该是交给对象所在的函数结束的时候,让函数负责销毁就可以了(自动调用)。
如果自定义的构造函数使用了new,则必须提供使用delete的析构函数
const 成员函数:
1. 如果我们定义了一个常量对象,则这个常量对象所调用的函数必须是 const 成员函数
例如:
const Class object = Class(value1, value2);
object.function();
const常量函数的定义:
void Class::function() const {
//do something
}
2. 如果参数是常量则在函数中,该参数则不允许被改变
3. 如果函数是const成员函数,那么在函数中不能使用this来改变调用函数的对象