首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++类 成员数据初始化,该如何处理

2012-04-30 
C++类 成员数据初始化class Date{Date() {}public:int iint j}int main(){Date w//这里有错误coutw.

C++类 成员数据初始化
class Date{
Date() {}
public:
int i;
int j;
};
int main()
{  

Date w;//这里有错误
cout<<w.i<<endl<<w.j<<endl;
system("pause");
  return 0;
}:
我想测试下默认构造函数不对i,j赋值时,i和j有没有被自动初始化为0,但是这个程序有错误: error C2248: “Date::Date”: 无法访问 private 成员(在“Date”类中声明)
谁能帮我解决下这个问题?谢谢

[解决办法]
class Date{
public:
Date() {}
int i;
int j;
};
[解决办法]
因为你的默认构造函数的访问属性为private当然编译 不过
[解决办法]
class Date{
public:
Date() {}
public:
int i;
int j;
};
c++ class默认的权限是private
[解决办法]
没定义构造函数,缺省为private,因此出错
[解决办法]
你的构造函数是私有的,不让这样用
[解决办法]
你的构造函数是private,Date w的时候会调用默认的构造函数,但是由于你的构造函数是private,无法在类外调用,所以会出错!!
[解决办法]

探讨

嗯,是的。运行结果i和j都是-858993460.不是说内置类型在局部不会自动初始化吗?为什么给赋了值?
int b;
int main()
{
int w;
cout<<b<<endl;//输出为0
cout<<w<<endl;//输出空
return 0;
}引用:

class Date{
public:
Date() {}
pu……

[解决办法]
构造函数在默认情况下是私有的,不可以在外部函数进行访问,
[解决办法]
Date w;时会调用构造函数。而你的构造函数没有指明访问控制属性,默认为私有,是不能在类外访问的,因此出错。一般应该将构造函数声明为public。
另外,i,j作为类的成员变量,构造函数不对其做初始化的的话,编译器会为其指定一个绝对值很大的负值。
这样做是为了在程序运行过程中便于发现错误。i,j都指定为0的话不易发现错误。

热点排行