用法:在数据/函数前面 加 static
同一个函数可以处理不同的数据对象,靠的是this pointer。每个成员函数都会自动传入this pointer(不用自己写出来),黄色部分可写可不写(编译器会自己加)。
加了static的数据与对象脱离,不属于对象,内存会单独开一个区域,只有一份。静态数据一定要在Class的外面加一行定义(初始化、声明)。
加了static的函数,静态函数没有this pointer,不能像其他成员函数那样处理对象,只能处理静态数据。
调用static函数的方式有两种:
1. 通过对象调用 //a.set_rate(7.0);
2. 用过类名称调用 //Account::set_rate(5.0);
把构造函数ctors放在private
//Singleton设计模式
class A {
public:
static A& getInstance( return a; ); //让外界能够访问到a
set up () {...}
private:
A();
A(const A& rhs); //两个构造函数都私有,那么外面没人能调用他们
static A a; //在private里放一个自己类型(A)的静态a;意味着已经存在一个A
...
};
A::getInstance() .setup(); //调用
问题:没人调用 a一直存在
改进:放进函数里,有人调用才会创建,离开函数依然存在
//Singleton设计模式
class A {
public:
static A& getInstance( return a; ); //让外界能够访问到a
set up () {...}
private:
A();
A(const A& rhs); //两个构造函数都私有,那么外面没人能调用他们
...
};
A& A::getInstance()
{
static A a;
return a;
}
模板 class template
在类定义前 加 template
calss
编译器看到不同的T,会得到不用的一段代码(或许会造成代码的膨胀)
编译器自动将T变为stone,并且去找有无stone::operator<这个操作符重载
namespace避免同名,在std里的就不用写全名了
namespace std
{
...
}
using std::cout // using declaration
其他细节:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)