在C ++中用类创建对象

时间:2015-09-26 11:29:59

标签: c++ class

这是我的代码

class test {
  TButton *asd;
public :
  test(){
      asd->Text = "Test";
  }
};

问题是它不起作用。因为该对象尚未使用new运算符构造。但是,当我尝试使用new运算符时,它返回一个错误,甚至没有编译。感谢Anyhelp。

我正在使用C ++ Builder。

1 个答案:

答案 0 :(得分:1)

你需要这样做:

  test() : asd(new TButton(...)) {
      asd->Text = "Test";
  }

否则你正在使用未初始化的指针。请注意我在那里使用的语法称为“初始化列表”,很多时候它是编写构造函数的最佳方法。

当然,您需要添加一个匹配的析构函数:

  ~test() {
    delete asd;
  }

但是“三个规则”(或五个)会告诉你添加更多的方法,所以只需避免使用原始指针,并使用“智能指针”:

class test {
  std::unique_ptr<TButton> asd;
public :
  test() : asd(new TButton(...)) {
      asd->Text = "Test";
  }
};

现在您不需要用户定义的析构函数。