请教一段代码的意思,在线等30分钟
class A
{
....
static class A aaa;
}
A A:aaa value;
大概是这样,这几行是什么意思?
[解决办法]
A A::aaa value;
对吗???
用法感觉比较古怪
class A
{
....
static class A aaa;
}
aaa是一个自己类型的静态对象.
[解决办法]
value是什么东西?
下面代码编译通过:
class A
{
public:
A(){ccc = 8;}
int ccc;
static class A aaa;
};
A A::aaa ;
main()
{
A c;
}
[解决办法]
#include <iostream>
using namespace std;
#define value (6)//呵呵猜的
class A
{
int ccc;
public:
A(const int &n=0):ccc(n){}
void show()
{
cout < <ccc < <endl;
}
static class A aaa;
};
A A::aaa value;
main()
{
A c;
c.show();
c.aaa.show();
system( "PAUSE ");
return 0;
}
[解决办法]
value就是你要给构造函数的值啊,看你的构造函数定义了
[解决办法]
是不是声明一个静态对象 value 值的内存在静态区
[解决办法]
要写成A A::aaa value;
是C++标准对于静态成员变量的规定,
构造函数发生在定义变量的时候
函数的实现和编译连接过程不能比较吧,在编译时查找实现的代码
函数的执行都是在运行时吧
[解决办法]
还有个问题, 可能比较菜鸟:
A A::aaa value;
是在main()外, 那么构造函数在什么时候执行?
编译的时候? 那构造函数的实现是不是可以放在此句后?
或者是链接时?
=========================================================
static 成员变量不是任何对象的,所以,其初始化不能出现在
构造函数中!
而她应该放到哪里呢?呵呵,所以就有了以上这个语法了.
其实,如果你去掉A A::aaa value;
你是不能用aaa的,因为,aaa根本没有定义.只是在类里声明过.
[解决办法]
类外对static对象aaa赋初试值
工作量在value里面