static 静态
- 类中的static成员和成员函数一样,都只有一份
- 但是该成员函数处理的哪个对象,靠this pointer来确定
- complex c1;
cout << c1.real(); 相当于c中的 cout << complex::real ( &c1 ); - 加了static的成员变量:和对象就脱离了;所有对象的该数据都一样,就弄成静态的;
- 加了static的成员函数:静态函数没有this pointer,所以不可以处理对象中的东西,也就是非静态的成员变量;只能处理静态成员变量。
class Account {
public:
static double m_rate; // 只是声明
static void set_rate(const double& x) { m_rate = x; }
};
double Account::m_rate = 8.0; // 定义:使其获得内存
int main() {
// 调用static函数的两个方式:
Account::set_rate(5.0); // 1.通过class name 调用
Account a;
a.set_rate(7.0); // 2.通过object调用
}
把ctor放在private区
- Singleton设计模式:希望该类只产生一个对象
class A {
public:
static A& getInstance() { return a; }
setup() {...}
private:
A();
A(const A& rhs);
static A a;
...
};
A::getInstance().setup();
- 升级版本:只有当有人调用getInstance的时候,才会分配空间,但是离开函数以后,依然存在。
class A {
public:
static A& getInstance() {
static A a;
return a;
}
setup() {...}
private:
A();
A(const A& rhs);
};
A::getInstance().setup();
cout

class template 类模板 template<typename T>

function template 函数模板 template<class T>

namespace 命名空间
更多细节
- operator type() const; 比如分数的类,变成double
- explicit complex(…) : initialization list { }
- pointer-like object
- function-like object
- template specialization
- Standard Library
- variadic template (since C++11)
- move ctor (since C++11)
- Rvalue reference (since C++11)
- auto (since C++11)
- lambda (since C++11)
- range-base for loop (since C++11)
- unordered containers (Since C++)
- (关于C++11的新特性,将再写一个博客讨论)