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

标签 c++ constructor

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

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

     Image GetSpecialImage()
     {
          Image rVal(10,10);
          return rVal;
     }
}

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


编辑: 尽管你说它很好,但它并没有真正做我想做的......让我给你一些更多的代码:

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;
}

这部分有什么问题吗?

最佳答案

正如 Seth 所说,这是合法的。

为了使它更好地工作,您可以进行一些更改,即使 GetSpecialImage 成为静态函数。在类中定义的静态函数是类函数而不是对象函数。这意味着您不需要对象即可调用它。

它会被这样调用:Image special = Image::GetSpecialImage();

关于c++ - 从 C++ 中的其他方法调用构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10505425/

相关文章:

C++ 忽略构造函数异常的后果

c++ - 如何使用 weak_ptr 构造一个包含对父对象的引用的对象?

c++ - 将 MFC CString 转换为无符号整数

c++ - 相同的地址,多个 shared_ptr 计数器,C++ 标准是否禁止?

c++ - 如何将按钮按下消息通知父对话框

c++ - 数据结构最多包含 100 个数字并且很容易找到最小数字

c++ - 如何在 Win32 应用程序中捕获 CTRL + CTRL 按键?

php - 为什么 PHP 私有(private)变量适用于扩展类?

C++ 错误 : no matching constructor for initialization of "my:Library" with Clang 11. 0.3

java - 如何防止 JPA 查询包含 String 构造函数,当 null String 值仅可用时抛出 NullPointerException