静态成员
概念:在C++中,静态成员是属于整个类的属性或行为的,不属于某个对象。让所有对象共享这些属性和行为
静态成员变量的声明:static 变量类型 变量名; 例子:static double rate;
静态成员函数的声明:static 返回类型 函数名(参数列表); 例子:static int calc(double money);
静态成员变量的定义:变量类型 类名::变量名 = 初始值;
静态成员函数的定义:返回值类型 类名::函数名(参数列表)
{
函数体
}
vi Bank.h
#ifndef _BANK_H
#define _BANK_H
class Bank
{
piblic:
static double rate;
static int calc (double money);//利息公式
};
#endif
vi Bank.cpp
#include"Bank"
double Bank::rate = 0.05;//静态成员变量的定义
int Bank::calc(double money)//静态成员函数的定义
{
return money*rate;
}
vi main.cpp
#include"Bank.h"
#include<iostream>
using namespace std;
int main(int argc,char argv)
{
cout<<"rate: "<<Bank::rate<<endl;
cout<<"ret: "<<Bank::calc(100)<<endl;
return 0;
}
/*int main(int argc,char argv)
{
Bank::rate = 0.04;共享所有利息
cout<<"rate: "<<Bank::rate<<endl;
cout<<"ret: "<<Bank::calc(100)<<endl;
return 0;
}
*/
运行结果
单例模式
单例模式是一种常用的软件模式。在它的核心结构中只包含一个被称为单例的特殊类。
通过单例模式可以保证系统中一个类只有一个实例易于外界访问,从而方便对实例的控制并节约系统资源
1.SingleTone.h
#ifndef _SINGLE_TONE_H
#define _SINGLE_TONE_H
class Singletone
{
private:
Singletone();
static Singletone* intrance;
public:
static Singletone* getInstance();
};
#endif
2.SingleTone.cpp
#include"SingleTone.h"
SingleTone* SingleTone::instance = 0;
SingleTone::SingleTone()
{
}
SingleTone* SingleTone::getInstrance()
{
if(instance == 0)
instance = new SingleTone();
return instance;
}
3.vi main.cpp
#include <stdio.h>
#include"SingleTone.h"
int main(int argc,char **argv)
{
SingleTone *instance = SingleTone::getInstance();
printf("instance: %p\n",instance);
SingleTone *instance = SingleTone::getInstance();
printf("instance: %p\n",instance);
SingleTone *instance = SingleTone::getInstance();
printf("instance: %p\n",instance);
}
运行结果
地址都是唯一的,这样就实现了单例