gpt4 book ai didi

c++ - 返回类型不匹配(或不匹配)

转载 作者:行者123 更新时间:2023-11-28 06:07:49 25 4
gpt4 key购买 nike

我对这段代码有点困惑。它实际上是我的,但我仍然不明白为什么编译时至少没有任何警告。

#include <iostream>
class Line {
private:
int length;
public:
Line(void);
Line(int);
int getLength(void);
Line& operator = (const Line&);
};
Line::Line(int a) : length(a) {}
int Line::getLength(void) { return length; }
Line& Line::operator = (const Line& line) // The function return type is reference of a value of the Line type.
{
length = line.length;
return *this; // The function actually returns dereferenced (*this) value.
}
int main(void)
{
Line line {2};
Line line_a {0};
line_a = line;
std::cout << line_a.getLength() << std::endl;
return 0;
}

唯一的区别是没有符号。它仍然编译

#include <iostream>
class Line {
private:
int length;
public:
Line(void);
Line(int);
int getLength(void);
Line operator = (const Line&);
};
Line::Line(int a) : length(a) {}
int Line::getLength(void) { return length; }
Line Line::operator = (const Line& line) // The function return type is reference of a value of the Line type.
{
length = line.length;
return *this; // The function actually returns dereferenced (*this) value.
}
int main(void)
{
Line line {2};
Line line_a {0};
line_a = line;
std::cout << line_a.getLength() << std::endl;
return 0;
}

最佳答案

this 是指向当前对象的指针。取消引用 this 会为您提供该对象。当函数的返回类型是引用并且您返回一个对象时,将返回对该对象的引用。因此,您将返回对通过取消引用 this 指针获得的对象的引用。没有任何警告的理由。

如果你没有取消引用 this 指针,那么你会得到一个编译错误,因为你会试图返回(一个引用)一个与返回类型冲突的指针函数。

关于c++ - 返回类型不匹配(或不匹配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32020154/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com