“访问器方法”和“构造函数”之间有什么区别?

时间:2011-08-07 20:37:15

标签: c++

“访问者方法”和“构造函数”之间有什么区别?

3 个答案:

答案 0 :(得分:4)

构造函数初始化一个新对象。访问者允许外部调用者获取有关对象状态的信息。

答案 1 :(得分:2)

构造函数是负责对象初始化的函数。它是在创建类的新实例时调用的(静态或动态使用new),它允许您显式初始化对象的内部属性或执行任意代码。它由析构函数补充,在释放对象时(在释放之前)自动调用析构函数。一个例子是一个具有指向数组的指针的类;在构造函数中,您将分配数组,并在析构函数中释放构造函数中分配的内存。

访问器方法(或getter)是一种允许您访问对象的内部属性的方法。它与setter串联使用以封装对象的某些属性。访问器应该是不可变的(也就是说,它不应该影响对象的内部状态)。

注意,摘录析构函数,类的所有方法都可以重载,包括构造函数。采用同一类对象的const引用的构造函数称为复制构造函数。作为默认构造函数,它由编译器自动生成,默认情况下,它逐字段复制所有属性。由于并不总是需要这种行为,因此您可以实现复制构造函数以便能够正确复制另一个对象(或者停止复制 - 请参阅boost :: noncopyable)。

示例:

// C++
class Foo {
    int i;

public:
    // Copy constructor
    Foo(const Foo& foo) {
        this->i = foo.i;
        // Here you can do other stuff, beside raw copying...
    }
};

class Bar {
public:
    // Constructor
    Bar() {
        m_foo = new Foo();
    }

    // Destructor
    ~Bar() {
        delete m_foo;
        m_foo = 0;
    }

    // Getter (hides the actual attribute)
    const Foo* getFoo() const { return m_foo; }

    // Setter
    void setFoo(Foo* foo) {
        // Create a copy of Foo
        m_foo = new Foo(*foo);
    }

private:
    Foo* m_foo;
};

答案 2 :(得分:0)

构造函数是一个代码块,当您使用new关键字来实例化对象时,它会运行。 的 http://beginnersbook.com/2013/03/constructors-in-java/

访问器方法用于返回私有字段的值。它遵循命名方案,在单词“get”前面加上方法名称的开头。 的 http://java.about.com/od/workingwithobjects/a/accessormutator.htm