作用域限定符
类名::函数名
类内声明,类外定义
在类内定义的成员函数都是内联函数
this指针
指向对象的指针(*this == 对象自己)
·属于对象
可以区分重名的成员变量和局部变量
/*链式调用(套娃)*/
//返回值为类引用
static关键字
·static修饰局部变量:生命周期延长至程序结束
·static修饰全局变量:只能在本.C或.CPP中使用,将这个变量的外部链接线改为内部连接线
·static修饰函数 :只能在本.C或.CPP中调用
static修饰成员变量:静态成员变量
01)/*静态成员变量 不属于对象,属于类
静态成员变量所在的类中所有的对象共享这个静态成员变量
在内存中只占一份 */
02)//静态成员变量只能在类外进行初始化(类内声明,类外初始化)
03)//静态成员变量在程序运行时申请空间,在程序结束时释放
//可以用类名加作用域限定符来直接访问
static修饰成员函数:静态成员函数
·使用静态成员函数或变量效率高,内存消耗小
01)//属于类
02)//可以用类名加作用域限定符来直接访问
03)没有this指针
04)只能访问静态成员变量//普通成员变量属于对象,所以不能访问
单例模式
一个类只有一个对象
懒汉式单例(什么时候调用什么时候new)
饿汉式单例(当程序开始执行时立刻实例化一个堆对象,供调用)
const关键字
/*使用const修饰函数参数不希望参数在函数内部进行修改,增加编程的健壮性*/
常量指针:/*常量的指针*/ 0指针的指向可以改变,不可以通过指针改变指向的内容
·const在左边是常量指针
/* const int* p;*/
指针常量(必须初始化):/*指针是常量*/ 0指针的指向不可以改变,指针指向的内容可以改变
·*在左边是指针常量
//int* const p = &a;
常量指针常量(必须初始化):/*即是指针常量又是常量指针*/ 0都不可以改变
//const int* const p;
常成员函数
void func() count {}
/*可以调用非const的成员变量,不可以更改其数值
只能调用const修饰的成员函数*/
常量对象
1)常量对象中任何值都不允许修改
const 类名 对象名;
2)常量对象只能调用const修饰的成员函数
友元(friend)
突破权限,访问到所有的属性值
让类的封装不可靠,通常只用于运算符重载
在类内被友元修饰的函数可以任意访问函数所在类的成员
友元函数也没有this指针
友元函数声明可以放在类中的任意位置
友元函数可以是多个类的友元函数,需要在类中声明
一个类的友元类可以访问该类的所有成员
运算符重载
不被重载的运算符
".", "*", "?:", "sizeof", "::"
返回值 operator + /*重载的运算符*/ (/*运算对象*/,/*运算对象*/){}
1)cout也是对象,类名为ostream
2)只能通过友元(全局)函数对 << 运算符进行重载
3)想要连续进行流输出可以使用链式调用重载"<<"
如果重载符号的左边有对象,则可以用成员函数进行重载,否则只能用友元(全局)函数对运算符进行重载