请问类里面有它自身的静态类类型对象,代表着什么?
class A
{public:
int a;
static int b;
static A x;};
上面的代码能编译通过.我想问一下,如果在一个类里面声明一个静态对象,这个对象的类型是它的类类型(如上面的x对象).这样做有什么好处吗?或者说在哪个方面需要这样声明一个A类?
[解决办法]
没什么特别的
这种情况下,可以通过类中的静态变量,用一个get方法配合,提供一个常量对象,
比如:
class People{
private:
static People superMan( "毛泽东 ");
public:
People(string name);
getSuperMan(return superMan);
}
[解决办法]
class A
{public:
int a;
static int b;
static A x;};
--------------------------------------------
这种形式在语法上是允许的,但是如果去掉A x前面的static,则引起“循环定义”,编译错误,至于这种写法的实际意义,只能在具体实现中具体分析。
[解决办法]
这样做有什么好处吗?或者说在哪个方面需要这样声明一个A类?
========================================================
一个显而易见的好处是,全局变量x不会受到其他全局变量命名的影响(类中公有的静态变量实际是全局变量).而且在逻辑上容易归类,容易使用.