Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.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++ 如何在中使用2个对象覆盖运算符_C++_Operator Overloading - Fatal编程技术网

C++ 如何在中使用2个对象覆盖运算符

C++ 如何在中使用2个对象覆盖运算符,c++,operator-overloading,C++,Operator Overloading,我学着考试,我上课的时候总是带着操作工。我知道如何超越接线员,但接线员超越接线员有问题+=和-=:我想让乘坐第二班车的乘客尽可能多地换乘第一班车 class bus { private: const int howSeat; int howTake; public: bus(int s=51, int z=0); int Free(); Passenger(); bus &operator+=(bus k); bus &

我学着考试,我上课的时候总是带着操作工。我知道如何超越接线员,但接线员超越接线员有问题+=和-=:我想让乘坐第二班车的乘客尽可能多地换乘第一班车

class bus
{
private:
    const int howSeat;
    int howTake;
public:
    bus(int s=51, int z=0);
    int Free();
     Passenger();
    bus &operator+=(bus k);
    bus & operator-=(bus k);

};

bus &bus::operator+=(bus k)
{
    howTaken+=k.howTaken;
    return *this;
}


int bus::Passanger()
{
    return howTaken;
}

int bus::free()
{
    return HowSeat-HowTaken;
}

bus::bus(int s, int z):howSeat(s)
{
    howTaken=z;
    if(howTaken<0 ||  howTaken>howSeat)
    {
       howTaken=0;
    }
}
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}
类总线
{
私人:
康斯特国际酒店;
int howTake;
公众:
总线(ints=51,intz=0);
int-Free();
乘客();
总线和操作员+=(总线k);
总线和操作员-=(总线k);
};
总线和总线::操作员+=(总线k)
{
howtake+=k.howtake;
归还*这个;
}
int总线::Passanger()
{
回程时间;
}
int总线::free()
{
返回座位的方式;
}
总线::总线(内部s,内部z):howSeat(内部s)
{
howtake=z;
如果(howTakenhowSeat)
{
howtake=0;
}
}
int main()
{

cout在您的情况下,您不需要在重载函数中返回某些内容,它可以完美地与void一起工作。要实现您想要的功能,您需要使用“&”(例如:funstion(type&variable)),这意味着您获取了变量的地址,因此也将对原始变量进行更改。您可以在本例中看到:

#include <iostream>

using namespace std;

class bus
{
private:
    const int howSeat;
    int howTaken;
public:
    bus(int s=51, int z=0);
    int Passanger();
    void operator+=(bus &k);
};

void bus::operator+=(bus &k) // now all changes made in k, will also be made in bus2
{
    if ((k.howTaken + howTaken) > howSeat)
    {
        k.howTaken = k.howTaken + howTaken - howSeat;
        howTaken = howSeat;
    }
    else
    {
        howTaken += k.howTaken;
        k.howTaken = 0;
    }
}


int bus::Passanger()
{
    return howTaken;
}

bus::bus(int s, int z):howSeat(s)
{
    howTaken = z;

    if( howTaken < 0 || howTaken > howSeat)
    {
       howTaken=0;
    }
}
int main()
{
    bus bus1(20, 4);
    bus bus2(20, 9);

    cout << bus1.Passanger() << " " << bus2.Passanger() << endl;

    bus1 += bus2;

    cout << bus1.Passanger() << " " << bus2.Passanger();
    return 0;
}
#包括
使用名称空间std;
班车
{
私人:
康斯特国际酒店;
int HOWTAKE;
公众:
总线(ints=51,intz=0);
int Passanger();
无效运算符+=(总线和k);
};
void bus::operator+=(bus&k)//现在在k中所做的所有更改也将在bus2中进行
{
如果((k.howtheed+howtheed)>howSeat)
{
k、 HowTake=k.HowTake+HowTake-howSeat;
howtheed=howtheat;
}
其他的
{
howtake+=k.howtake;
k、 howtake=0;
}
}
int总线::Passanger()
{
回程时间;
}
总线::总线(内部s,内部z):howSeat(内部s)
{
howtake=z;
如果(HowTake<0 | | HowTake>howSeat)
{
howtake=0;
}
}
int main()
{
总线1(20,4);
总线2(20,9);

无法解释所显示的代码有什么问题。请注意,其中有一个输入错误:
int howTake;
->
int howTake;
,并且您的
main
除了打印
Hello World!
之外,实际上什么都不做。您的代码中有几个输入错误。请听编译器,它会准确地告诉您是什么错误。如果它说它找不到你知道应该存在的符号,请检查拼写。记住名字是区分大小写的:<代码>所使用的< /C> >与<代码> > < <代码> >。我希望那个乘客能用第二辆公共汽车出来,进入第一辆公共汽车,但我不知道用C++写,所以如果有人编写代码并解释如何工作。我将非常感激,请花一些时间阅读(或刷新),以及。