cpp的单例模式。
禁止在外部使用,构造器,拷贝构造器,赋值重载
在一些场合是很有用。
//
// main.cpp
// singleData
//
// Created by bikang on 16/11/15.
// Copyright (c) 2016年 bikang. All rights reserved.
//
#include <iostream>
class SignalClass{
public:
static SignalClass* getInstance(){
if(!_obj){
_obj = new SignalClass();
}
return _obj;
}
private:
//禁止在外部初始化,复制和拷贝
SignalClass(){ std::cout << "construct 1" << std::endl;};
SignalClass(const SignalClass&obj2);
SignalClass& operator =(const SignalClass&obj2);
static SignalClass *_obj;
};
SignalClass* SignalClass::_obj = nullptr;
void copyData(SignalClass *s1){
std::cout << s1<< std::endl;
}
int main(int argc, const char * argv[]) {
std::cout << "signal path" << std::endl ;
SignalClass *obj1 = SignalClass::getInstance();
SignalClass *obj2 = SignalClass::getInstance();
SignalClass *obj3 = obj2;
//错误
//SignalClass obj4 = *obj1;
std::cout << obj1<< " " << obj2 << " "<< obj3 << std::endl;
copyData(obj1);
return 0;
}