payment1
のメソッドが異なる出力を与えるのはなぜですかpayment2
? payment2
はメソッド名と同じ引数名を持っています(私はこれを言っていますか?)。私はコードthis->moneysamename+=moneysamename;
を意味します。コンパイラが2つの変数を区別できないのはなぜですか?ここで引数と同じ名前のメソッドは異なる出力になります
は完全なコードです:
#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);
}
は出力:payment2
内部ここ
Worker: 200
Worker: 500
Worker: 200
Worker: 300
質問を理解できません。正確な問題を述べてください - あなたの期待される成果は何ですか?(なぜそうであると思いますか?) – SergeyA
なぜ彼らは '静的'ですか? –