从C++中的其他方法调用构造函数

Sai*_*ait 0 c++ constructor

我不确定在C++中是否合法:

class Image
{
     Image(int w, int h) // constructor
     {
            ...
     }

     Image GetSpecialImage()
     {
          Image rVal(10,10);
          return rVal;
     }
}
Run Code Online (Sandbox Code Playgroud)

我是否需要使用另一种中级init()方法在C++中执行此操作?如果有,你能告诉我怎么样?


EDIT: 虽然你说它很好,它并没有真正做我想做的事情......让我给你一些代码:

class Image
{
     float* data;
     int w;
     int h;

     Image(int w, int h) // constructor
     {
            this->w = w;
            this->h = h;
            data = (float*) malloc ( w * h * sizeof(float) );
     }

     Image GetSpecialImage()
     {
          Image rVal(this->w,this->h);

          for(i=0;i<this->w * this->h;i++)
          {
                rVal.data[i] = this->data[i] + 1;
          }

          return rVal;
     }
}

int main()
{
      Image temp(100, 100);
      Image result = temp.GetSpecialImage();
      cout<<result.data[0];

      return 0;
}
Run Code Online (Sandbox Code Playgroud)

这部分有什么问题吗?

Zan*_*ynx 5

正如赛斯所说,这是合法的.

你可以改变以使其更好地工作的东西是制作GetSpecialImage静态功能.类中定义的静态函数是类函数而不是对象函数.这意味着你不需要一个对象来调用它.

然后会像这样调用它: Image special = Image::GetSpecialImage();