读书人

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

发布时间: 2012-02-05 12:07:15 作者: rapoo

构造函数调用问题,非常奇怪
#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;


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

读书人网 >C++

热点推荐