C++编程技巧和规范_静态对象讨论
本文记录C++的编程技巧之静态对象讨论。
类中静态成员对象,不用时不需要在类外定义;用到时,需要在类外定义,并且,没用到时候,编译器也会为其分配内存。
示例如下:
namespace namespace1
{class A{public:A(){cout << "A::A()" << endl;}~A(){cout << "A::~A()" << endl;}};class B{public:B(){cout << "B::B()" << endl;}~B(){cout << "B::~B()" << endl;}static A m_a;};A B::m_a;
}
C++17中引入了inline静态成员变量,使用Inline相当于既做了定义又做了声明。
class C
{
public:inline static A m_aa; // 既是定义,又是声明
};
但是,类中的基础类型,比如double int那么,如果源码中没有用到这个静态成员变量,编译器很可能不为这个静态成员变量分配内存。