首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

构造函数调用有关问题,非常奇怪

2012-02-05 
构造函数调用问题,非常奇怪#includestdio.hclasstest{public:test()test(constchar*buffer)voidprinti

构造函数调用问题,非常奇怪
#include   <stdio.h>

class   test
{
public:
test();
test(const   char   *buffer);
void   printit();

private:
char   m_buffer[10];
char   *p;
};

test::test()
{
p   =   m_buffer;
printf( "%p,   %p\n ",   p,   m_buffer);
}

test::test(const   char   *buffer)
{
test();
printf( "%p,   %p\n ",   p,   m_buffer);
}

int   main()
{
test   a( "adf ");

return   0;  
}

为什么俩次printf出来的结果不一样?

求解     并改正,要求要一个构造函数调用另一个构造函数



[解决办法]
test();
你想干啥?学java出身的?
在C++里,构造函数是不可以这么调其它构造函数的。
[解决办法]
test::test(const char *buffer)
{
test();//------------------------------------------调用构造函数,重新创建一个test 对象
printf( "%p, %p\n ", p, m_buffer); //--------这个是当前的test 对象
}

两个对象不一样。C++中一个构造函数,调用一用另外一个构造函数,就是两个不同的对象。


[解决办法]
晕哦,

你调用 test();

并不是调用了它自己的一个构造函数,而是实例话了一个新的对象,只是没副值而已

相当于

test a;


[解决办法]
什么意思?构造函数可以再调用另一个构造函数吗??构造函数的作用不就是初始化一个对象吗??

热点排行