我有以下代码:
#include <iostream>
using namespace std;
class Base
{
private:
int i;
char ch;
public:
void showdata()
{
cout<<"Int:"<<i<<endl;
cout<<"Char:"<<ch<<endl;
}
//int pub_data ;
} ;
int main()
{
Base ob;
ob.showdata() ;
//cout<<"Public Data:"<<ob.pub_data<<endl;
return 0;
}
该程序编译并运行良好。输出显示 i 初始化为 0,ch 初始化为 '\0'。
如果您注意到我已经注释掉了该程序中的 2 条语句。首先是公共数据 pub_data 的声明,其次是 main 中打印此公共数据的行。
现在的问题是,如果我取消注释这两行,类的数据成员即 i、ch、pub_data 似乎没有被初始化,并且在打印时,它们显示垃圾值。
所以我的问题是公共数据在这里有什么区别?
我正在使用 g++ 3.4.6
int 和 char 都不会自动初始化为 0。它发生的事实只是运气。
您需要添加一个执行初始化的构造函数:
Base() : i(0), ch(0) {}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)