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

看了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这本书了,上面的问题只是提供了一个学习的线索,涉及到内部实现是很复杂的,在这里写出也没有必要

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值