2015-09-02 70 views
0

所以即时学习C++和我的老师说你需要intGetFoo()函数才能返回私人数据。因此,例如,我有这样的代码NewBie:C++私有变量

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(); 
} 

那么,什么是具有intGetFoo()如果我能得到这是私人使用公共职能从我的课,而不会使用该数据的点GET功能。

我什么时候会使用getters(即(intGetFoo(){return private variable}))。 函数还是有什么用途?

回答

1

如果你需要从课堂外访问数据,你只需要getter和setter。在你的情况可能是这样,你可以说

std::cout << "Output from seed=" << ps.GetSeed() << ", muliplier=" 
      << ps.GetMultiplier() << " = " << ps.GetOutput(); 

你并不需要使用getter和setter从内GetOutput

+0

好吧我现在明白了,我误解了我的教授。因此,无论何时您想访问类中的信息来让我的主函数输出,我需要Getters以获得任何数字,在这种情况下,如果我要在我的主函数中编写GetSeed(),我可以说'std :: cout <<“当种子是这个数字”<< GetSeed()<<“发生这种情况”<< ps.GetOutPut(); ' – NBera

+0

是的 - 如果你想在课堂以外的私人数据 - 获得者和/或设置者。如果它真的对班上是私人的,那么你不需要他们。 – John3136

0

有使用的getFoo从内GetOutput没有意义的。要么你误解了你的老师的意思,要么他不知道他在说什么。

公共/私人的目的在于隐藏班级的用户对班级的实施。但是当你编写你的类的方法时,你正在实现它,而不是使用它,所以直接使用私有成员没有问题。

0

私人会员通常是您的内部状态的一部分。班级用户和孩子班级都不能访问它。在你的情况下通常为seed

有时,您可能想要授予访问子类和类用户访问部分内部状态的权限:这就是您要使用getter的时候!