默认构造函数
来源:8-16 深拷贝浅拷贝及move语义的优化
wxz123
2020-07-28
老师,定义
String s3; // 无参构造函数
时,不应该调用系统自定义的构造函数吗,为啥进入了下面这个自定义的构造函数中呢,如果不传参数的话,那么是是所有的构造函数的默认的参数类型都是const char *
类型的吗
String::String(const char *str)
{
if (str == NULL)
{
m_data = new char[1];
if (m_data != NULL)
{
*m_data = '\0';
}
else
{
exit(-1);
}
}
写回答
1回答
-
quickzhao
2020-07-28
是这样的。标准中规定一旦你自定义了构造函数,那么将不会替你生成默认无参构造。这里事实上你用String s3这里会有一个类型转换导致调用String::String(const char *str),有点巧合,如果你此时定义一个无参构造,系统反而不知道调用哪个构造函数了,会报错。
00
相似问题