const修饰成员函数
成员函数后加const,const修饰this指针所指向的对象,保证调用这个const成员函数的对象在函数内不会被改变
可读可写可以调用只读;只读不能调用可读可写
const在之前,修饰对象 const Date *p Date const p
const在之后,修饰指针变量本身 Date const p
inline(内联)
以inline修饰的函数叫做内联函数,提升程序运行效率
尽量以const,enum(枚举),inline替换 #define
宏的优点:增强代码复用性,提高性能
宏的缺点:
1. 不方便调试(因为在预处理阶段进行了宏替换)
2. 导致代码可读性差,可维护性差,容易误用
3. 没有类型安全检查
友元:突破类封装的一个函数,友元函数允许在类外访问该类中的任何成员,友元函数用关键字friend说明
Date是Time的友元,所以Date可以访问Time的所有成员
注意:友元一定上破坏了c++的封装,不宜多用
类的静态成员:
类的静态成员为该类型的所有对象所共享
静态成员函数直接突破类域就能调用;
静态成员函数只能访问静态成员变量,因为没有this指针
问题:
静态成员函数不可以访问非静态成员函数
非静态成员函数可以访问静态成员
const修饰成员函数:在成员函数后边加const,const修饰this所指向的对象,保证调用这个const成员函数的对象在函数内不会被改变
类的静态成员:
1.类里边static修饰的成员称为静态类成员
2.静态成员为该类型的所有对象所共享
静态成员函数没有隐含的this指针
C语言:static修饰变量或函数
函数定义或代码块外变量声明:static修改标识符链接属性(external->internal),存储类型和作用域不变
代码块内部变量声明时:static修改存储类型,从自动改为静态变量,链接属性和作用域不变。
C++:
static修饰成员变量:
1.在类内完成声明,在类外完成定义
2.为所有对象共享,不在属于某个具体对象
3.sizeof(对象),不包括静态成员变量
static修饰成员函数:
1.无this指针。普通成员函数具有隐藏的this指针
2.可以不用对象来调用
类型::静态成员函数名字 或者(对象.静态成员函数的名字 转换为前一种方式)
// 面试题:vector是如何增容?一定是2倍?
// SGI 2倍 PJ 1/2
// 拷贝数据涉及深浅拷贝及类型萃取
// 面试题:vector和list的区别是什么?vector缺点是什么?
// vector 一白遮百丑 白:随机访问 丑:增容+前面的插入删除效率低O(N)
// list 一黑毁所有 黑:不能随机访问 所有:任意位置插入删除O(1)
// vector cpu高速缓存效率高
// vector resize和reserve缓解增容。
// resize和reserve的区别?