考虑下面的课程
class test;
class sample
{
sample() { }
~sample(){}
void SomeMethod();
private:
test t;
};
sample::SomeMethod(test &t1)
{
if(t.isuninitialized())
{
t = t1;
}
else
{
// Check if t and t1 member values are the same
}
}
main()
{
sample s;
test t1(a);
s.someMethod(t1);
}
有没有办法检查对象t是否已初始化?在指针的情况下,检查对象是否为NULL就足够了。但是,在这种情况下,t不是指针可以进行这样的检查,或者我是否需要编写一个方法来检查成员变量值是否初始化为默认值
答案 0 :(得分:0)
是的,实际上编译器可以为您检查:如果代码编译,编译器能够生成调用test
的默认构造函数的代码,而后者负责创建对象 - 所以对象存在,并初始化为某些(可能是未知的,取决于test
默认构造函数的实现方式)状态。