没有初始化就无法声明类?

use*_*171 8 c++ constructor initialization class

对于像int这样的标准数据对象,可以完成以下操作

    int number;
    number = 0;
Run Code Online (Sandbox Code Playgroud)

基本上,您可以在初始化之前声明数字,如果您在各种if语句中初始化并且不希望数字超出范围,则非常有用.

可以使用自定义类完成类似的操作吗?

我有一个名为mem_array的类,其中包含表单的构造函数

    mem_array(int,int,std::string);
Run Code Online (Sandbox Code Playgroud)

我想做以下几点

      mem_array myData;
      if(x==0) myData(1,1,"up");
      if(x==1) myData(0,0,"down");
Run Code Online (Sandbox Code Playgroud)

基本上,所以我可以在if语句的范围之外使用myData.可以这样做吗?

pok*_*909 4

您的第一行会给您一个错误,因为构造函数没有默认值并且不存在没有参数的构造函数。

只需使用指针(或者更好的是智能指针,这样您就不必负责删除对象)。但之后一定要检查 x 是 0 还是 1,即检查 myData 是否已构建。

mem_array* myData=0;
if(x==0) myData=new mem_array(1,1,"up");
if(x==1) myData=new mem_array(0,0,"down);

assert(myData!=0);
Run Code Online (Sandbox Code Playgroud)