如何检查对象构造是否完整?

kal*_*kal 2 c++

有一个带有几个整数和指针的类,

 class A {
     int a;
     int b;
     char* s;
    public:
    ...
      class ConstructA {
           A &a;
           public:
           ConstructA (A& ta) : a(ta) {}
           ...

      };

};
Run Code Online (Sandbox Code Playgroud)

如上所示,ConstructA负责构造对象A.我想编写一个方法来查看ConstructA是否成功构造了对象a.你会怎么做?

Gre*_*ill 7

由于构造函数无法在C++中失败,因此对象可以是:

  • 不存在
  • 成功建造.

如果构造函数抛出异常,则在捕获异常时该对象实际上不存在.

您可能希望实现一个额外的方法,例如isOK()返回对象的内部状态是否表示有用的方法.例如,如果您有一个表示文件的对象,那么您可以isOK()用来指示该文件可以成功打开.但是,就C++而言,无论文件是否可以打开,文件对象都将完全构造.

话虽如此,我并不完全确定这个ConstructA类在你的例子中的作用.