C++构造函数调用其他构造函数

来源:互联网 发布:linux操作系统教程pdf 编辑:程序博客网 时间:2024/05/01 00:42

    学了这么久的C++,今天算是郁闷了!在此记下,防止以后犯错误!

   


    在写一个string类的时候我在这个类的一个构造函数中去调用了其他的构造函数,代码如下:

 

    我为什么要这么写主要是有这么一个构造函数:

 

 

   不好意思,在emacs里面写的,窗口开太多,代码被严重扭曲了...

 

   大家可以看到,我主要是为了图个方便。

 

   然后,大家可以看看我是怎么在写main函数:

 

  然后大家来看看我在终端打印出来的结果

 

 

  我晕!csdn怎么不能贴图...真悲剧。。。算了,我直接把输出复制上来吧^^

 

   

 

  大家可以看到,输出是乱码。为什么呢?因为内存是分配了的,但是却没有给值。

 

   下面大家注意看构造函数的调用。在主调构造函数中,是直接去调用了被调的构造函数。而不大都清楚,构造函数的调用意味着对象被创建。

   呵呵,想到什么了?我们调用被调构造函数的时候,其实是创建了一个新对象,所以,我们欺骗自己,以为在被调构造函数里面,我们可以

   去初始化那些成员变量。不过真沮丧,这仅仅是美好的想法(java是可以这样做的)。大家不信么?来看看内存状态吧!

 

    

 

   这个是我吧被调构造函数修改之后的样子,然后有下面输出:

    

 

   看清楚了吧,我们的this指针值是和在被调构造函数里面那个this指针是不同的!

   我们的成员根本没有被初始化!

 

   然后我把主调构造函数改成了这样(不过不建议跟我一样玩火哈^^,最好还是自己写辅助函数去)。

   

  这下子输出是这样的:

    

  可以了。

   ++ ,写到这里才看到原来还是可以上传图片的,csdn怎么在搞...

原创粉丝点击