L+obj2.L; ly=本->B+obj2.B; 返回lx,ly; } 无效显示() { 首先,这是错误的 public: lx; ly;,c++,C++" /> L+obj2.L; ly=本->B+obj2.B; 返回lx,ly; } 无效显示() { 首先,这是错误的 public: lx; ly;,c++,C++" />

在运算符重载中,变量的数据类型和范围应该是什么? 我试图理解C++中的运算符重载。我的第一个问题是,我们可以添加两个对象并将其值存储在一个变量中吗?我尝试了这个,但得到了一个错误,lx和ly没有在这个范围内定义。第二,我想显示加法后的结果,我应该给出什么命令来显示结果?如果我添加了两个对象,我可以在下面的代码中提到数据类型int吗 class Rectangle { private: int L; int B; public: lx; ly; Rectangle() //default constructor { L = 2; B = 2; } Rectangle(int l,int b) //parametrized constructor { L = l; B = b; } int operator+ (Rectangle obj2) //operator overloading { lx = this->L + obj2.L; ly = this->B + obj2.B; return lx,ly; } void Display() { cout<< "length is " << L <<endl; cout<< "breadth is " << B <<endl; } }; int main() { Rectangle R1; R1.Display(); Rectangle R2(5,3); R2.Display(); return 0; } 类矩形 { 私人: int L; int B; 公众: lx; ly; 矩形()//默认构造函数 { L=2; B=2; } 矩形(intl,intb)//参数化构造函数 { L=L; B=B; } int运算符+(矩形obj2)//运算符重载 { lx=此->L+obj2.L; ly=本->B+obj2.B; 返回lx,ly; } 无效显示() { 首先,这是错误的 public: lx; ly;

在运算符重载中,变量的数据类型和范围应该是什么? 我试图理解C++中的运算符重载。我的第一个问题是,我们可以添加两个对象并将其值存储在一个变量中吗?我尝试了这个,但得到了一个错误,lx和ly没有在这个范围内定义。第二,我想显示加法后的结果,我应该给出什么命令来显示结果?如果我添加了两个对象,我可以在下面的代码中提到数据类型int吗 class Rectangle { private: int L; int B; public: lx; ly; Rectangle() //default constructor { L = 2; B = 2; } Rectangle(int l,int b) //parametrized constructor { L = l; B = b; } int operator+ (Rectangle obj2) //operator overloading { lx = this->L + obj2.L; ly = this->B + obj2.B; return lx,ly; } void Display() { cout<< "length is " << L <<endl; cout<< "breadth is " << B <<endl; } }; int main() { Rectangle R1; R1.Display(); Rectangle R2(5,3); R2.Display(); return 0; } 类矩形 { 私人: int L; int B; 公众: lx; ly; 矩形()//默认构造函数 { L=2; B=2; } 矩形(intl,intb)//参数化构造函数 { L=L; B=B; } int运算符+(矩形obj2)//运算符重载 { lx=此->L+obj2.L; ly=本->B+obj2.B; 返回lx,ly; } 无效显示() { 首先,这是错误的 public: lx; ly;,c++,C++,你需要写: public: int lx; int ly; 然后,重载的+运算符应该返回一个矩形,而不是int: Rectangle operator+(const Rectangle & obj2) { Rectangle result; result.L = L + obj2.L; result.B = B + obj2.B; return result; } 或者更简单: Rectangle operator+(const Rectangle & obj

你需要写:

public:
int lx;
int ly;
然后,重载的
+
运算符应该返回一个
矩形,而不是
int

Rectangle operator+(const Rectangle & obj2)
{
  Rectangle result;
  result.L = L + obj2.L;
  result.B = B + obj2.B;
  return result;
}
或者更简单:

Rectangle operator+(const Rectangle & obj2)
{
  Rectangle rec(L + obj2.L, B + obj2.B);
  return rec;
}
或最简单的:

Rectangle operator+(const Rectangle & obj2)
{
  return Rectangle(L + obj2.L, B + obj2.B);
}
你这样称呼它:

Rectangle r3 = R1 + R2;
operator+(const Rectangle&obj2)
中的
const
+
不是严格必需的,您也可以像最初尝试那样编写
operator+(Rectangle obj2)


使用
&
更有效,因为它可以防止参数被复制,而
常量可以防止程序员修改参数,这将在使用
&

时修改操作数。首先,这是错误的

public:
lx;
ly;
你需要写:

public:
int lx;
int ly;
然后,重载的
+
运算符应该返回一个
矩形,而不是
int

Rectangle operator+(const Rectangle & obj2)
{
  Rectangle result;
  result.L = L + obj2.L;
  result.B = B + obj2.B;
  return result;
}
或者更简单:

Rectangle operator+(const Rectangle & obj2)
{
  Rectangle rec(L + obj2.L, B + obj2.B);
  return rec;
}
或最简单的:

Rectangle operator+(const Rectangle & obj2)
{
  return Rectangle(L + obj2.L, B + obj2.B);
}
你这样称呼它:

Rectangle r3 = R1 + R2;
operator+(const Rectangle&obj2)
中的
const
+
不是严格必需的,您也可以像最初尝试那样编写
operator+(Rectangle obj2)


使用
&
更有效,因为它可以防止参数被复制,而
常量
可以防止程序员修改参数,在使用
&
将加法结果存储在成员变量中时会修改操作数,这似乎毫无意义。您想这样做吗添加两个矩形对象,返回值在逻辑上也应为矩形。

这是重载运算符+并打印结果的常用方法

     #include <iostream>

    class Rectangle
    {
    private:
        int L;
        int B;

    public:
    //    int lx;
    //    int ly;

    Rectangle()    //default constructor
    {
        L = 2;
        B = 2;
    }

    Rectangle(int l,int b)      //parametrized constructor
    {
        L = l;
        B = b;
    }

    Rectangle operator+ (Rectangle obj2)    //operator overloading
    {
       Rectangle rec ( this->L + obj2.L, this->B + obj2.B);
       return rec;
    }
    void Display()
    {
        std::cout<< "length is " << L <<std::endl;
        std::cout<< "breadth is " << B <<std::endl;
    }
};

int main()
{
    Rectangle R1;
    R1.Display();

    Rectangle R2(5,3);
    R2.Display();

    Rectangle R3 = R1 + R2;
    R3.Display();
    return 0;
}
#包括
类矩形
{
私人:
int L;
int B;
公众:
//int-lx;
//巧妙地;
矩形()//默认构造函数
{
L=2;
B=2;
}
矩形(intl,intb)//参数化构造函数
{
L=L;
B=B;
}
矩形运算符+(矩形obj2)//运算符重载
{
矩形rec(this->L+obj2.L,this->B+obj2.B);
返回记录;
}
无效显示()
{

std::cout将加法结果存储在成员变量中似乎毫无意义。如果要添加两个矩形对象,返回值在逻辑上也应该是矩形。

这是重载运算符+并打印结果的常用方法

     #include <iostream>

    class Rectangle
    {
    private:
        int L;
        int B;

    public:
    //    int lx;
    //    int ly;

    Rectangle()    //default constructor
    {
        L = 2;
        B = 2;
    }

    Rectangle(int l,int b)      //parametrized constructor
    {
        L = l;
        B = b;
    }

    Rectangle operator+ (Rectangle obj2)    //operator overloading
    {
       Rectangle rec ( this->L + obj2.L, this->B + obj2.B);
       return rec;
    }
    void Display()
    {
        std::cout<< "length is " << L <<std::endl;
        std::cout<< "breadth is " << B <<std::endl;
    }
};

int main()
{
    Rectangle R1;
    R1.Display();

    Rectangle R2(5,3);
    R2.Display();

    Rectangle R3 = R1 + R2;
    R3.Display();
    return 0;
}
#包括
类矩形
{
私人:
int L;
int B;
公众:
//int-lx;
//巧妙地;
矩形()//默认构造函数
{
L=2;
B=2;
}
矩形(intl,intb)//参数化构造函数
{
L=L;
B=B;
}
矩形运算符+(矩形obj2)//运算符重载
{
矩形rec(this->L+obj2.L,this->B+obj2.B);
返回记录;
}
无效显示()
{

std::cout
返回lx,ly
可能不是您认为的那样。您忘记了类声明中
lx
之前和
ly
之后的
public
之前。您确定这会编译吗?您没有指定数据成员的类型
lx
ly
。是的,它是在后面编译的正在设置数据类型。但是如果我想在加法后显示结果,我应该如何调用该函数?
返回lx,ly
可能不是您认为的那样。您忘记了在类声明中
lx
之前和
ly
之后的
public
之后的
int
之前。您确定这会编译吗?您没有指定类型数据成员的e
lx
ly
。是的,它是在提到数据类型后编译的。但是如果我想在添加后显示结果。我应该如何调用该函数?您还可以使
操作符+
成为
常量
成员函数,因为它不修改
*此
。您也可以使
操作符+
a
const
成员函数,因为它不修改
*此