获取并设置功能查询

时间:2013-11-13 03:08:49

标签: c++ visual-c++

#include "stdafx.h"
#include<iostream>
#include<string>

using namespace std;

class Variable{
private:
string name;
public:
//This is my second question
    //
void setName(string x){
    name = x;
}
string getName(){
    return name;
}
};
int main(){
Variable Voject;
Voject.setName("Hello");
cout << Voject.getName() << endl;
return 0;
}

首先,代码运行完美。不幸的是,当我在观看教程的时候,老兄并没有明确告诉你为什么要将所有变量作为一个私有类放在课堂上(他说这对程序员来说是一个糟糕的习惯,你永远不应该把变量放在公共课)。请给我一个解释。

另一个问题是当你想要获取你应该设置的私有类中的变量并获取变量时。那么你真的应该把函数setName和getName的名字?还是只是为了容易记住。 PS。我是新手所以请尽量简单地回答。

3 个答案:

答案 0 :(得分:0)

Getters和setter在C ++中并不是真正的惯用语,更常见的是让成员公开。 getter和setter的目的是允许将值与其对对象的影响分离,从而在需要时允许更复杂的代码,以保持一致的状态,例如。

有关C ++中getter和setter实用程序的一些有趣评论,请参阅Getting Abstractions。 TL; DR:getter和setter只比公共变量更好,尝试使用更高级别的抽象。

答案 1 :(得分:0)

  1. 私人变量

    您不希望其他程序自由设置变量,这可能会导致副作用。您可能希望在设置或获取变量时进行一些检查。

  2. getter and setters

    在C ++中,他们没有固定的名称规则,您可以根据需要为其命名,只需使用某些约定,例如google coding style for c++

  3. ,这是一种很好的做法。

答案 2 :(得分:0)

这是我为您的问题提供的一些信息,

  1. 您可以精确控制数据成员的可访问性。您可以通过setter / getters实现无访问权限,只读访问权限或读写权限。
  2. 功能抽象。通过函数实现对成员的访问时,您可以根据将来的更改来更改函数的实现。只有你的代码必须重新编译,外面的世界仍然保持不变。
  3. 您可以在getter / setter中提供某种检查。