构造函数调用问题,非常奇怪
#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;
[解决办法]
什么意思?构造函数可以再调用另一个构造函数吗??构造函数的作用不就是初始化一个对象吗??