1.公有和私有性
公有数据成员:对外界具有读写权限
私有数据成员:除了自己类内部不可以使用,C++中默认权限为private
权限选择,必须要对外界提供,就放在public,其他的都放在private
一般成员属性都放在Private,如果外界需要使用就提供公有接口
2.初始化和赋值
初始化:在定义时候给值,内存划分时候给值
赋值:定义之后给值,内存划分之后给值
3.初始化列表:
①只有构造函数有初始化列表
②必须初始化的成员需要放在初始化列表
③在本对象之前需要完成的动作,必须放在初始化列表
4.const 方法
const成员和引用必须要放在初始化列表
常对象只能调用常方法,构造函数,析构函数和静态函数不影响
常方法中只能调用常方法,静态函数不影响
5.哪些成员对象需要写成常方法?
(1)如果成员方法内不需要改动成员,并且没有对外暴露成员引用或者指针就可以直接写成
(2)如果成员内部不需要改动成员,但是会对外暴露成员引用或者指针,就写两个成员方法(const方法和非const方法)形成重载
(3)如果成员内部需要改动成员,就写成普通方法
6.静态成员变量(static)
存储在数据段,静态成员在一个类中只有一份,无论构造多少,都只有一份。只能在类外进行初始化,在.cpp中初始化,且只能初始化一次,去掉static关键字,并且加上作用域
静态成员变量访问可以不依赖与对象,不依赖于this指针,使用类的作用域可以直接进行访问
静态成员方法:没有this指针,只能使用静态成员
7.单例模式:
构造函数放到私有成员中,提供静态接口提供对象,
#include<iostream> #include<mutex> using namespace std; //单例模式 class Only { public: static Only* get_Only() { if (NULL == _only) { ——lock.lock() if (NULL == _only) { _only = new Only(); } _lock.unlock(); } return _only; } private: Only(); static mutex _lock; static Only* _only; }; Only* Only::_only = NULL; mutex Only::_lock = mutex();