Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 操作员+;不返回完整对象?_C++ - Fatal编程技术网

C++ 操作员+;不返回完整对象?

C++ 操作员+;不返回完整对象?,c++,C++,我们得到了这个头文件,它要求我们重载=和+操作符,这样我们就可以执行i3=i1+i2 由于某些原因,我的+运算符没有返回完整的对象。。。它返回的字符串很好,但整数返回的是-858993460。考虑到我给他们赋值,这很奇怪 这是我的+操作员: Image Image::operator+(Image const& image) { return image; } 在my=运算符中(值传递到该运算符),它错误地显示了ints: const Image& Image::ope

我们得到了这个头文件,它要求我们重载
=
+
操作符,这样我们就可以执行
i3=i1+i2

由于某些原因,我的
+
运算符没有返回完整的对象。。。它返回的字符串很好,但整数返回的是-858993460。考虑到我给他们赋值,这很奇怪

这是我的
+
操作员:

Image Image::operator+(Image const& image)
{
    return image;
}
在my
=
运算符中(值传递到该运算符),它错误地显示了
int
s:

const Image& Image::operator=(Image const& image)
{
    cout << image.filename << endl; // Displays correctly
    cout << "image x: " << image.size_x << ": " << image.get_size_x() << endl; // Displays incorrectly (-int)
const Image&Image::operator=(Image const&Image)
{

原来是我的复制构造函数。我现在觉得很傻

我所要做的就是在操作符中指定一个默认值,将图像作为参数

即:


显示您的
return
语句正在使用的复制构造函数。问题几乎肯定是您的复制构造函数,感谢您声明它是家庭作业。我想更多的人会好奇,如果您不使用运算符+()方法,直接用代码转储的值?隔离它是否真的是运算符、类,或者是否由于成员类型而需要对cout执行特殊操作。更严格的const正确性不会有什么影响,但最有可能的是复制构造函数的格式不正确。请注意,在赋值运算符中也没有我可以看到的赋值只需要一些
cout
语句。注意,您也可以像这样使用名为
ctor初始值设定项的东西:
Image::Image(Image&const img):size\ux(img.get\usize\ux()){
初始化
size_x
成员。虽然更好的选择是让编译器创建默认的复制构造函数。复制整数的复制构造函数是非常无用的。对,在我们的家庭作业中,我们必须做除此之外的其他操作,但这是我的问题的根源。
Image::Image( Image & const img )
{
     this->size_x = img.get_size_x();
}