有没有办法检查用户定义的类是否已初始化

Is there a way of checking if a user defined class is initialized or not?

本文关键字:是否 初始化 定义 检查 用户 有没有      更新时间:2023-10-16

考虑下面的类

    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不是指针,则可以进行这样的检查,或者我需要编写一个方法来检查成员变量值是否初始化为默认值

是的,事实上编译器可以为您检查这一点:如果代码编译,编译器能够生成调用 test 的默认构造函数的代码,而 ,而默认构造函数又负责创建对象 - 因此对象存在,并初始化为某种(可能是未知的,具体取决于test默认构造函数的实现方式)状态。