新手:C++ 私有变量
NewBie: C++ Private Variables
所以我正在学习 C++,我的老师说你需要 intGetFoo() 函数才能 return 私有数据。所以例如我有这个代码
class Pseudorandon{
public:
Pseudorandon( int Seed,int Multiplier,int Increment,int Modulus);
void PerformAlga(int a, int b, int c, int d);
void GetOutput();
private:
int seed;
int multiplier;
int increment;
int modulus;
int Number;
int Number2;
int Number3;
int Number4;
};
主要
Pseudorandon::Pseudorandon(int Seed,int Multiplier,int Increment,int Modulus){
PerformAlga(Seed, Multiplier, Increment, Modulus);
}
void Pseudorandon::PerformAlga(int a, int b, int c, int d){
seed=a;
multiplier=b;
increment=c;
modulus=d;
}
void Pseudorandon::GetOutput(){
Number = (multiplier * seed + increment) % modulus;
Number2 = Number;
Number3 = (multiplier * Number2 + increment) % modulus;
std::cout<<Number<<Number3;
}
int main(void)
{
Pseudorandon ps(1,40,725,729);
ps.GetOutput();
}
如果我可以使用 public 函数从我的 class 中获取私有数据而不使用 GET 函数,那么拥有 intGetFoo()
的意义何在?
我什么时候使用 getter,即 (intGetFoo(){return private variable}
)。
功能或目的是什么??
如果您需要从 class 外部访问数据,则只需要 getter 和 setter。在你的情况下,你可以说
std::cout << "Output from seed=" << ps.GetSeed() << ", muliplier="
<< ps.GetMultiplier() << " = " << ps.GetOutput();
您不需要从内部使用 getter 和 setter GetOutput
从 GetOutput 内部使用 GetFoo 没有意义。要么你误解了你老师的意思,要么他不知道他在说什么。
public/private 的要点是对 class 的用户隐藏 class 的实现。但是当你写你的class的方法时,你是在实现它,而不是使用它,所以直接使用私有成员是没有问题的。
私人成员通常是您内部状态的一部分。 class 用户和儿童 class 都不能访问它。在您的情况下通常 seed
。
有时,您可能希望授予子 classes 和 class 用户对部分内部状态的只读访问权限:这时您将使用 getter!
所以我正在学习 C++,我的老师说你需要 intGetFoo() 函数才能 return 私有数据。所以例如我有这个代码
class Pseudorandon{
public:
Pseudorandon( int Seed,int Multiplier,int Increment,int Modulus);
void PerformAlga(int a, int b, int c, int d);
void GetOutput();
private:
int seed;
int multiplier;
int increment;
int modulus;
int Number;
int Number2;
int Number3;
int Number4;
};
主要
Pseudorandon::Pseudorandon(int Seed,int Multiplier,int Increment,int Modulus){
PerformAlga(Seed, Multiplier, Increment, Modulus);
}
void Pseudorandon::PerformAlga(int a, int b, int c, int d){
seed=a;
multiplier=b;
increment=c;
modulus=d;
}
void Pseudorandon::GetOutput(){
Number = (multiplier * seed + increment) % modulus;
Number2 = Number;
Number3 = (multiplier * Number2 + increment) % modulus;
std::cout<<Number<<Number3;
}
int main(void)
{
Pseudorandon ps(1,40,725,729);
ps.GetOutput();
}
如果我可以使用 public 函数从我的 class 中获取私有数据而不使用 GET 函数,那么拥有 intGetFoo()
的意义何在?
我什么时候使用 getter,即 (intGetFoo(){return private variable}
)。
功能或目的是什么??
如果您需要从 class 外部访问数据,则只需要 getter 和 setter。在你的情况下,你可以说
std::cout << "Output from seed=" << ps.GetSeed() << ", muliplier="
<< ps.GetMultiplier() << " = " << ps.GetOutput();
您不需要从内部使用 getter 和 setter GetOutput
从 GetOutput 内部使用 GetFoo 没有意义。要么你误解了你老师的意思,要么他不知道他在说什么。
public/private 的要点是对 class 的用户隐藏 class 的实现。但是当你写你的class的方法时,你是在实现它,而不是使用它,所以直接使用私有成员是没有问题的。
私人成员通常是您内部状态的一部分。 class 用户和儿童 class 都不能访问它。在您的情况下通常 seed
。
有时,您可能希望授予子 classes 和 class 用户对部分内部状态的只读访问权限:这时您将使用 getter!