Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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++_Function_Static - Fatal编程技术网

C++ 与参数同名的方法会导致不同的输出

C++ 与参数同名的方法会导致不同的输出,c++,function,static,C++,Function,Static,为什么方法payment1给出的输出与payment2不同payment2的参数名与方法名相同(我希望我说的是对的?)。我的意思是代码this->moneysamename+=moneysamename。为什么编译器不能区分这两个变量 以下是完整的代码: #include <iostream> using namespace std; class Person { protected: static int money; static int

为什么方法
payment1
给出的输出与
payment2
不同
payment2
的参数名与方法名相同(我希望我说的是对的?)。我的意思是代码
this->moneysamename+=moneysamename。为什么编译器不能区分这两个变量

以下是完整的代码:

#include <iostream>
using namespace std;

class Person
{
    protected:
        static int money;
        static int moneysamename;
public:
    virtual void payment1(float money1) = 0;
    virtual void payment2(float moneysamename) = 0;
};

class Worker : public Person
{
public:
    virtual void payment1(float moneyanothername) 
    {
        this->money+= moneyanothername;
        cout << "Worker: " << money << endl;
    };

    virtual void payment2(float moneysamename) 
    {
        this->moneysamename+= moneysamename;
        cout << "Worker: " << moneysamename << endl;
    };
};

void pay1(Person &m, float sum)
{
    m.payment1(sum);
}

void pay2(Person &m, float sum)
{
    m.payment2(sum);
}

int Person::money = 0;
int Person::moneysamename = 0;

int main()
{
    Worker Gaston;

    pay1(Gaston, 200);
    pay1(Gaston, 300);

    pay2(Gaston, 200);
    pay2(Gaston, 300);
}
virtual void payment2(float moneysamename)
{
此->moneysamename+=moneysamename;
cout
virtual void payment2(浮动货币名称)
{
此->moneysamename+=moneysamename;

cout您的问题是您没有在
payment2
中打印静态变量,而是打印局部函数变量

cout << "Worker: " << moneysamename << endl;
您得到的是函数local
moneysamename
,而不是静态成员变量

cout << "Worker: " << this->moneysamename << endl;

您可能会得到相同的结果。

您的问题是您没有在
payment2
中打印静态变量,而是打印局部函数变量

cout << "Worker: " << moneysamename << endl;
您得到的是函数local
moneysamename
,而不是静态成员变量

cout << "Worker: " << this->moneysamename << endl;

你也会得到同样的结果。

无法理解这个问题。请说明确切的问题-你预期的输出是什么(为什么你期望它是这样的)。为什么它们是静态的?
?无法理解这个问题。请说明确切的问题-你预期的输出是什么(为什么你期望它是这样的)。为什么它们是静态的?@Rudi没问题。很乐意帮忙。@Rudi没问题。很乐意帮忙。
cout << "Worker: " << this->moneysamename << endl;
virtual void payment1(float money) 
{
    this->money+= money;
    cout << "Worker: " << money << endl;
};