单例:保证一个类只有一个实例,作用跟全局变量类似。
a.cpp
#include <stdio.h>
#include "a.h"
A* A::init(){
if (single == nullptr)
{
single = new A();
}
return single;
}
A::A(){
printf("construct A!\n");
}
void A::print(){
printf("hello world\n");
}
A *A::single = nullptr;
a.h
class A{
public:
static A *init();
A();
void print();
private:
static A *single;
};
b.cpp
#include <stdio.h>
#include "a.h"
int main(){
// A::init()->print();
auto a = A::init();
a->print();
return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(main)
add_library(a SHARED a.cpp)
add_executable(b b.cpp)
target_link_libraries(b a)