如何为c程序分配内存教程
考虑以下计划:
#include <string>
#include <iostream>
class B {
private:
std::string s;
public:
B() { s = fun(); }
std::string fun() { return "hello"; }
void print() {
std::cout << s;
}
};
int main(){
B b;
b.print();
}
输出是Hello
我的问题是:
在哪个序列中为数据成员分配内存(在本例中为’s’).
在构造函数中调用fun()时是否存在Object.
我怀疑的是我如何在b对象上调用一个尚未由构造函数创建的函数.
解决方法:
到目前为止,对象的构造函数体开始执行,所有对象的基础,直接或因此间接,以及成员已经被显式或隐式初始化.所以s是一个有效的字符串对象,在法律上可以是赋值的LHS.
这里应该注意的一件事是,如果从构造函数中调用多态类的虚方法,则选择此当前类型的实现,因为任何派生类型尚未初始化,因此其重载(如果有的话)将是非法的打电话.