我可以通过传递一个指针而不是const引用来写一个拷贝构造函数吗? (难道是确定的,如果我要确保我不会改变任何价值,但?)复制构造函数 - C++
像这样:
SampleClass::SampleClass(SampleClass* p)
{
//do the necessary copy functionality
}
代替:
SampleClass::SampleClass(const SampleClass& copyObj)
{
//do the necessary copy
}
在此先感谢。
谢谢大家。所以,如果我编写一个接受指针的构造函数(并认为这是我的拷贝构造函数),编译器仍然会提供默认的拷贝构造函数,在这种情况下,我的构造函数(我认为是我的拷贝构造函数)不会被调用,默认的拷贝构造函数会被调用。得到它了。
你不能没有在该代码调用未定义的行为得到一个空引用。在事实没有用之后测试NULL,因为错误出现在其他代码中。事实上,编译器可以优化掉if(&MyClassCopy == NULL)这个测试,因为它不会发生在一个正确的程序中。 – 2011-11-03 21:28:43
我同意解引用NULL指针是一个无效的操作,并且NULL的测试最好在取消引用操作之前完成。但是由于可以在运行时分配NULL,所以大多数编译器将允许您创建NULL引用,编译器无法检查它。或者为NULL优化一个测试。你可以用g ++来测试它,测试工作。 – Rob 2011-11-04 07:36:29
经过一段时间的思考,你是对的,你必须在解引用操作之前测试null。事后的测试确实没有定义。 – Rob 2011-11-04 08:11:48