对类成员是int bool char类型的static const 成员可以在类中声明时直接定义、如下的a
class B{
public:
void func(){std::cout<<this->a;}
private:
static const int a=1;
};
但是也可以在类内声明在类外定义(但是定义时得把static去掉)如下
class B{
public:
void func(){std::cout<<this->a;}
private:
static const int a;
};
const int B::a=1;
对于自定义的类的对象成为另一个类的static const成员则一定要定义在类外面,声明在类内。如下
class A{
public:
A(int a=0):m(a){}
int m;
};
class B{
public:
void func(){std::cout<<this->a.m;}
private:
static const A a;
};
const A B::a=1;
在类内定义是不行的 。为啥内置类型直接可以声明定义 而自定义类型不行。原因我也不清楚。