2

构造函数自下而上(成员优先)为类的成员函数组装执行环境。析构函数从上到下(成员最后)拆解它。

[来自 C++ 编程语言]

请问有人能描述一下吗?我知道成员函数在这里是指类的成员函数,但是“成员”首先是什么?这与堆栈上的功能有关吗?什么是“组装执行环境”?

4

3 回答 3

6

意思是在构造函数中,先构造类的成员子对象,然后再运行构造函数的主体。使用析构函数则相反。首先析构函数的主体运行,然后成员子对象被销毁。

“成员函数的执行环境”只是可以通过定义的行为调用成员函数的环境。该环境是成员子对象是有效构造对象的环境。所以“为成员函数组装执行环境”,就是运行构造函数。这只是华丽的语言。

于 2012-11-23T22:19:23.120 回答
3

这句话很抽象。成员函数的执行环境是类本身的成员和基类之一公开的成员。

想必,所谓“组装执行环境”,就是初始化类的所有成员和基类(注意成员函数不需要初始化)。

我不明白这与堆栈上的对象有什么关系。

一个例子:

class X {
public:
  X() // constructor initializes first a, then b, then c
  {
    // members are now accessible for member functions
    foo();
  }

  void foo() {
    // member function executes in the context of an object
    // a, b, and c mean this->a, this->b and this->
    std::cout << a << b << c << std::endl;
  }

  ~X() {} // destroys first c, then b and then a 
private:
  int a;
  double b;
  char c;
};

请注意,在上述情况下,您不需要写出析构函数。这只是为了示例的目的。

于 2012-11-23T22:19:08.650 回答
0

我认为“成员”是指变量,因此在类上调用构造函数时,它首先创建变量,然后为类对象的执行功能设置环境,因为它们可能依赖于成员变量。

函数的“组装执行环境”是指先初始化成员变量,以便在成员函数中调用它们。

While destructor first destroys the environment for all the functions of the class object and then destroys the member variables.

于 2012-11-23T22:22:29.737 回答