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;
coutvirtual void payment2(浮动货币名称)
{
此->moneysamename+=moneysamename;
cout您的问题是您没有在payment2
中打印静态变量,而是打印局部函数变量
cout << "Worker: " << moneysamename << endl;
您得到的是函数localmoneysamename
,而不是静态成员变量
cout << "Worker: " << this->moneysamename << endl;
您可能会得到相同的结果。您的问题是您没有在payment2
中打印静态变量,而是打印局部函数变量
cout << "Worker: " << moneysamename << endl;
您得到的是函数localmoneysamename
,而不是静态成员变量
cout << "Worker: " << this->moneysamename << endl;
你也会得到同样的结果。无法理解这个问题。请说明确切的问题-你预期的输出是什么(为什么你期望它是这样的)。为什么它们是静态的?
?无法理解这个问题。请说明确切的问题-你预期的输出是什么(为什么你期望它是这样的)。为什么它们是静态的?@Rudi没问题。很乐意帮忙。@Rudi没问题。很乐意帮忙。
cout << "Worker: " << this->moneysamename << endl;
virtual void payment1(float money)
{
this->money+= money;
cout << "Worker: " << money << endl;
};