Inside The C++ Object Model---构造函数语义学

王朝c/c++·作者佚名  2006-02-01
窄屏简体版  字體: |||超大  

看了Inside The C++ Object Model这本书后感觉真的很爽,不过看起来也很费力。

关于构造函数的语义,上面讲的很深奥,不过看明白后会升华个人能力的

提出下面问题。

1:一个类没有显示的构造函数,那么当该类的对象产生时,它的默认构造函数一定被调用吗?如果这个默认构造函数被调用,它会将类中的数据成员变量都初始化为0吗?还是不初始化类中的成员变量?

class Foo

{

int val;

};

void Foo_()

{

Foo foo;////注意foo是怎么初始化val的,还是不初始化,还是随机初始化

}

2:一个类的初始化需要依赖于另外一个类

比如:

class Foo

{

public:

Foo();

private:

int val;

};

class Bar

{

public:

Foo foo;//内含Foo的对象

char *str;

};

void Foo_Bar()

{

Bar bar;//注意bar是怎么初始化的

}

3:含有虚拟函数的构造函数和非虚拟的构造函数的实现原理是否一样?

如果不一样,含有虚拟函数的默认构造函数的实现机理是什么?

class human

{

public:

man();

virtual void getage();

virtual void getsex();

private:

int age;

int sex;//0为男 1为女

};

class baby : public human

{

///////内容省略

};

void Human_Baby()

{

baby MyBaby;//注意MyBaby构造时的一系列编译器的操作,涉及到虚拟函数表的构造

}

关于这些问题的答案就得翻看Inside The C++ Object Model这本书了,上面的问题只是提供了一个学习的线索,涉及到内部实现是很复杂的,在这里写出也没有必要

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航