1.Const 编译器器级别检查防止误修改(可通过指针修改).
2.引用 &:
代码更简洁效率高(无靠背构造),引用与指针无本质区别,都是将地址数据压入栈空间,汇编下代码一样。
3.内联:
优点:提高效率 缺点:占用空间大
4.宏:
属于强制内联 实现必须放在头文件 类可以默认内联
5.函数重载:
调用方便,编译期的多态,实现机制——名称粉碎
6.默认参:
方便调用,默认参数放在最右边,不然会产生二义性
7.类:
7.1类编译完成后,期成员函数实际上市一个全局函数,但是其有作用域限制,在调用时会默认传递一个this指针,以区分不同对象的调用。
7.2定义类成员函数指针调用时要加作用域,普通函数不需要,作用域实际上市传递了一个this指针
7.3构造:申请资源初始化 析构:释放资源,反初始化。
7.4没有写拷贝构造的话当用一个对象去初始化另一个对象时系统会默认浅拷贝,即调用memcpy将源对象数据拷贝至目标对象。(缺点:在有new或malloc操作时出作用域可能产生重复释放问题。)以上为浅拷贝,浅拷贝不适合有申请空间的操作,解决方法:深拷贝。引用计数。写时拷贝(当数据发生改变时拷贝构造)。
8.new与delete区别
New在申请空间与释放空间时自动调用构造,析构。(为类申请空间时,基本数据类型没有这个问题)。
9.常成员方法。
Void const fun() const//防止误修改数据成员
{
This->m_ndata=1;(报错)(const对象只能调用常成员方法)
}
从基本数据类型来讲const int i =0;i只能被访问不能修改,上升到对象的角度同样,一个const对象只能被访问而不能被修改,所以访问const对象数据成员的方法只能是常成员方法。这样才能保证数据不被修改。当然这些都是编译器级别的限制,对于指针访问来书没有此限制。
10.无名对象
10.1CObj c(CObj(“w”))该行代码执行完 CObj(“w”)析构。
10.2有名对象出函数作用域析构。
11.静态数据成员
作用域静态数据区,不占内存空间,在对象构造前初始化。封装性,有作用域。
12.静态成员函数
封装性,有作用域,实际上是一个全局函数不存在this指针,相当于命名空间内定义的普通函数,
13.初始化表
指定父类构造,初始化const成员,成员对象的构造。
14.友元
主要使用场合:运算符重载,其他不考虑使用会破坏封装性
15.派生继承:
提高代码重用性 内存结构:(无虚函数)先父类数据再自己数据,
虚函数:运行时多态,实现机制——虚表