我很困惑在C中返回const引用.所以我写下面的代码块并在gnu c和visual studio上测试.并找到不同的答案.任何人都可以使用C中的返回const引用来说明好处,并且原因导致不同编译器上的行为不同.
#include
using namespace std;
class A
{
public:
A(int num1, int num2):m_num1(num1), m_num2(num2)
{
cout<
}
const A& operator * (const A & rhs) const
{
return A(this->m_num1 * rhs.m_num1, this->m_num2*rhs.m_num1);
}
A(const A& rhs)
{
this->m_num1 = rhs.m_num1;
this->m_num2 = rhs.m_num2;
cout<
}
const A& operator = (const A& rhs)
{
cout<
return *this;
}
void Display();
private:
int m_num1;
int m_num2;
};
void A::Display()
{
cout<
}
int main()
{
A a1(2,3), a2(3,4);
A a3 = a1 * a2;
a3.Display();
return 0;
}
在Gnu C上,它确实报告了正确的答案.但在视觉研究编译器上失败了.