A类和Class1之间的区别

时间:2013-04-24 01:19:19

标签: c++ eclipse

我正在尝试这个C ++教程。我是C ++编程的初学者。我不明白为什么他们在setValue中使用getValueclass Class1而不是setClass1。在其他教程中,他们在课程setA中使用getAclass Class1。以下是代码:

    class Class1 {
    int i;
public:
    void setValue( int value ) { i = value; }
    int getValue() { return i; }
};

第二个代码是:

    class A{
    int ia;
public:// accessor method because they are used to access a private date member
    void setA ( const int a);
    int getA ()const;
    int getA ();
};

请帮忙......

2 个答案:

答案 0 :(得分:1)

名称是任意的,你可以使用你想要的任何函数名称(当然,这取决于语言规则)。

但是,虽然可以使用xyzzy()plugh()作为getter和setter,但这并不是一个好主意。

您应该使用表示通话意图的内容,例如getTemperature()setVelocity()。而且这些甚至不必将一对一映射到内部字段,因为封装意味着不应暴露内部细节。

由此,我的意思是,即使内部字段存储为开尔文,您也可能有一个getTemperatureC()来返回摄氏温度:

double getTemperatureC(void)     { return kelvins - 273.15; }
void   setTemperatureC(double t) { kelvins = t + 273.15; }

(或者getter / setter可能使用任意复杂的计算)。

使用getA()创建类A可能会在创建类B以从A继承时遇到麻烦,但这超出了语言的范围。但是遵循上面的指导方针是很好的编程习惯(函数应该表明意图而不是内部)。

答案 1 :(得分:1)

  

我很困惑为什么他们在get中使用相同的名称并使用类名设置,并在另一个类上使用不同的get和set名称。 set和get名称是否会影响代码?

答案是否。

gettersetter通常在课程中称为accessormutators。它们只是根据某些约定命名的成员函数,对于阅读代码以理解这些函数的目的的人来说很容易,因此如果您尝试访问这些函数,那么将这些成员函数命名为get就像常识一样。成员变量,如果您尝试更改某些成员变量,则以set开头。名称可以是任何有效的标识符。

因此setValuesetA只是这些成员函数的标识符。它不会影响代码。

同时,不同的类可以具有相同的命名getter或setter,因为这些函数名称在不同的类范围内。