c++知识点回顾

1.单例模式

class TestClass{
private:
//构造函数和析构函数定义为private,可以防止直接生成
TestClass(){
InitMethod();
}
~TestClass(){
cout<<"~TestClass"<<endl;
}
//拷贝函数和复制函数只声明不定义,这样可以防止通过这两个函数生成
TestClass(const TestClass &);
TestClass& operator=(const TestClass&);
public:
//通过静态变量来控制单例的变量,同时这种方式也不用自己销毁变量
TestClass* GetInstance(){
static TestClass the_one;
return &the_one;
}
};

2.构造函数、析构函数、赋值函数、拷贝函数

这四个函数是每个类基本的函数,如果没有定义的话,系统会默认生成这4个函数的定义。
这里可以只声明而不去定义,可以防止系统自动生成
赋值函数和复制函数:

赋值函数是一个类以及生成了,然后通过=(赋值号)来赋值

复制函数是一个构造函数,这个类还没生成。

3.RAII(Resource Acquisition Is Initialization,资源获取即初始化)机制

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
class Lock
{
public:
Lock(pthread_mutex_t &mutext){
_mutex = mutex;
pthread_mutex_lock(_mutex);
}

~Lock(){
pthread_mutex_unlock(_mutex);
}
private:
Lock(const Lock&);
Lock& operator=(const Lock&);
pthread_mutex_t *_mutex;
};

4.智能指针

class TestClass{
public:
TestClass(int m):_m(m){
cout<<"TestClass"<<endl;
}
~TestClass(){
cout<<_m<<endl;
cout<<"~TestClass"<<endl;
}

private:
TestClass(const TestClass&);
TestClass& operator=(const TestClass&);
int _m;
};
typedef auto_ptr<TestClass> TestClassPtr;

5.

posted @ 2016-11-10 18:41  叫我二当家  阅读(97)  评论(0)    收藏  举报