c ++中getter setter和constructor之间的区别?

时间:2013-11-10 01:24:58

标签: c++ visual-c++ c++-cli

getter setter函数和构造函数之间有什么区别?我认为因为getter setter和构造函数目标都是在类中初始化私有成员变量。我有点困惑,因为他们都在做同样的事情。是否存在使用它们的特定情况,或者它们是否可以互换使用?

4 个答案:

答案 0 :(得分:1)

构造函数用于初始化实例变量,即为其提供第一个(初始)值, setter 方法用于<稍后强烈>改变。 Getters 用于检索他们拥有的当前值。

答案 1 :(得分:0)

Wikipedia answers your question about getters and setters quite nicely:

  

在计算机科学中,mutator方法是一种用于控制的方法   变量变化。它们也被广泛称为setter方法。   通常情况下,定位器附有吸气剂(也称为存取器),   它返回私有成员变量的值。

     

mutator方法最常用于面向对象的编程中   用封装原理。根据这个原则,   类的成员变量是私有的,以隐藏和保护它们   来自其他代码,只能由公共成员函数修改   (mutator方法),它将所需的新值作为a   参数,可选地验证它,并修改私有成员   变量

并将其与构造函数的定义进行比较:

  

在面向对象的编程中,构造函数(有时缩写为   ctor)在一个类中是一种特殊类型的子程序,用来创建一个   宾语。它准备新对象以供使用,通常接受参数   构造函数用于设置所需的成员变量。

     

构造函数类似于实例方法,但它与方法不同   因为它没有显式的返回类型,所以它不是隐式继承的   它通常对范围修饰符有不同的规则。构造函数   通常与声明类具有相同的名称。他们的任务是   初始化对象的数据成员和建立   类的不变量,如果不变量无效则失败。一个   正确编写的构造函数将结果对象保留为有效   州。必须在构造函数中初始化不可变对象。

因此,使用这些定义我们可以推断出以下内容:

  1. 构造函数初始化对象的数据成员(很像一个setter) - 即将对象的数据成员设置为某个初始值 - 但这只是在实例化时 。< / LI>
  2. Setter用于在对象的生命周期内任何修改数据成员的值。
  3. Getters用于访问在对象生命周期内任何时间的数据成员的值。

答案 2 :(得分:0)

实例的构造函数只调用一次。可以在对象的生命周期中的任何时刻调用getters / setter。构造函数用于初始化对象,而setter用于维护其更动态成员的对象状态(并且getter将用于访问该状态)。

答案 3 :(得分:0)

构造函数初始化您正在创建的实例 当对象(类的实例)被删除时,析构函数被调用。

Getters用于获取属性的值 Setter用于设置属性的值。

Example *ex = new Example();        // Constructor is called
char *ch = ex->getSomeProperty();   // Getter is called
ex->setSomeProperty("parameter");   // Setter is called with a passed argument
delete ex;                          // Destructor is called