求助,C++的静态成员变量可以在类的构造函数中直接初始化吗?

RT,如果不能,为什么这个程序能通过编译?#include<iostream.h>classTestClass{public:intj;public:TestClass(... RT,如果不能,为什么这个程序能通过编译?
#include<iostream.h>
class TestClass
{
public:
int j;
public:
TestClass()
{
j=1;
static int i=0;
cout<<++i<<endl;
cout<<j<<endl;
}
};
void main()
{
TestClass obj1;
TestClass obj2;
obj2.j+=obj1.j;
}

我是个刚学C++的新手,麻烦讲的通俗些详细些,谢谢了~
展开
 我来答
bjl0523
2013-03-22 · TA获得超过118个赞
知道小有建树答主
回答量:104
采纳率:0%
帮助的人:74.9万
展开全部
这个很简单啊,static int i=0;这句是在函数中的,所以是局部变量,其作用域在构造函数中,其生命周期保持到程序执行完为止。
更多追问追答
追问
但是课本上原话是:应在类体外对静态数据成员进行初始化,这句话与这个程序似乎是矛盾的,这怎么解释?
追答
不是啊,这个变量不是成员变量,只是构造函数中的变量,不属于类。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式