【发布时间】:2012-11-12 05:52:28
【问题描述】:
构造函数为成员组装执行环境 自下而上的类函数(成员优先)。这 析构函数从上到下(成员最后)对其进行反汇编。
[来自 C++ 编程语言]
请问有人能描述一下吗?我知道成员函数在这里是指类的成员函数,但是“成员”首先是什么?这与堆栈上的功能有关吗? “组装执行环境”是什么意思?
【问题讨论】:
标签: c++ constructor destructor
构造函数为成员组装执行环境 自下而上的类函数(成员优先)。这 析构函数从上到下(成员最后)对其进行反汇编。
[来自 C++ 编程语言]
请问有人能描述一下吗?我知道成员函数在这里是指类的成员函数,但是“成员”首先是什么?这与堆栈上的功能有关吗? “组装执行环境”是什么意思?
【问题讨论】:
标签: c++ constructor destructor
这句话很抽象。 成员函数的执行环境是类本身的成员和基类之一公开的成员。
大概,所谓“组装执行环境”,就是初始化类的所有成员和基类(注意成员函数不需要初始化)。
我不明白这与堆栈上的对象有什么关系。
一个例子:
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;
};
请注意,您不需要在 上述情况。这只是为了示范的目的。
【讨论】:
意思是在构造函数中,先构造类的成员子对象,然后再运行构造函数的主体。使用析构函数则相反。首先析构函数的主体运行,然后成员子对象被销毁。
“成员函数的执行环境”只是可以通过定义的行为调用成员函数的环境。该环境是成员子对象是有效构造对象的环境。所以“为成员函数组装执行环境”,就是运行构造函数。这只是华丽的语言。
【讨论】:
assemble 和disassemble 的描述更加抽象,可能是为了提供更高层次的视图。语言规范中没有提到执行上下文之类的东西。
我认为“成员”是指变量,所以在类上调用构造函数时,它首先创建变量,然后为类对象的执行功能设置环境,因为它们可能依赖于成员变量。
函数的“组装执行环境”是指先初始化成员变量,以便在成员函数中调用。
而析构函数首先销毁类对象所有函数的环境,然后销毁成员变量。
【讨论】: