在c ++中,将类变量声明为私有总是好的?

时间:2015-07-18 06:31:53

标签: c++ object-oriented-analysis

在Java中,通常建议将类变量声明为UPDATE `user_d` SET turns=turns+5 WHERE ID='".$id."' 。 我不知道C ++也像Java一样。但如果是的话,问题就在于(我认为),大多数课程应该有privateget()函数,我觉得很烦人。但如果它是良好的编程习惯,我会遵循它。请分享您的意见。

3 个答案:

答案 0 :(得分:3)

你所谈论的事情叫做封装。现在,使用该术语,您应该能够找到正确的定义,但您也应该能够找到其使用的原因。一旦您了解了封装的原因,您就可以权衡其解决任务的成本和收益,从而决定是否使用它。

顺便说一句,这些原则完全独立于您使用的编程语言,尽管它们可能采用不同语言的不同形式。

答案 1 :(得分:0)

如果您的class仅仅是C struct等数据成员的集合,那么最好坚持使用public成员。

但是,C ++ class比C struct强大得多。特别是,它有一个public接口,它向用户和private部分公开,它有助于实现公共接口,但对用户是隐藏的。通过这种方式,可以更改私有接口,而不会影响类的可用性。

Getters和Setter不一定是公共界面的一部分。

答案 2 :(得分:0)

您可能知道,您所谈论的内容称为封装。它有几个优点。

让我们说你有一个班级来每隔X秒从传感器获得温度。你肯定会有一个包含温度的变量。如果你的变量是公开的,那么每个人都可以写

std::cout << "temperature is : " << temperatureReader.temperature << " °C";

但如果传感器发生变化并以华氏温度返回温度,那么您就会陷入困境。如果你为这个类创建了一个getter,你唯一的改变就是在getter中,将你的farenheit转换为摄氏度。但是公共变量必须重构很多代码。然后一个吸气剂很重要。

现在让我们说你班上有传感器连接器。如果它是公开的,每个人都可以写:

temperatureReader.sensor = nullptr; 

当然它是邪恶的,但我可以做到,请记住,你的课程必须易于使用,并且难以使用。但是如果你创建了一个Setters,你就可以控制变量中的内容。

还有一个关于OOP的重要事项,即SOLID原则:

公共变量也是由您的子类继承的,您可能不是这样。

相关问题