0
#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。我是新手,所以请尽可能简单地回答。

4

3 回答 3

0

这是我为你的问题得到的一些信息,

  1. 您将对数据成员的可访问性进行精细控制。您可以通过 setter/getter 实现无访问、只读访问或读写访问。
  2. 功能抽象。当您通过函数实现对成员的访问时,您可以根据未来的变化更改函数的实现。只有你的代码需要重新编译,外面的世界仍然完好无损。
  3. 您可以在 getter/setter 中提供某种检查。
于 2013-11-13T04:01:05.047 回答
0
  1. 私有变量

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

  2. getter 和 setter

    在 C++ 中,它们没有固定的命名规则,你可以随意命名它,保持一些约定只是一个好习惯,比如C++ 的谷歌编码风格

于 2013-11-13T03:38:48.980 回答
0

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

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

于 2013-11-13T03:35:57.287 回答