c++ - 从复制构造函数调用构造函数
问题描述
从 c++ 11 开始,我们可以从另一个构造函数调用构造函数。那么我们可以每次都调用构造函数而不是定义复制构造函数吗?就像在这段代码中一样:
class MyString
{
private:
char *ptr;
int m_length;
public:
MyString(const char *parm = nullptr) : m_length(0), ptr(nullptr)
{
if (parm)
{
m_length = strlen(parm) + 1;
ptr = new char[m_length];
memcpy(ptr, parm, m_length);
}
}
MyString(const MyString &parm) : MyString(parm.ptr)
{
}
};
这种方法有什么不良影响吗?编写传统的复制构造函数有什么好处吗?
解决方案
那么我们可以每次都调用构造函数而不是定义复制构造函数吗?
是的你可以
委托构造函数的优点之一是通过在一些可能需要一组完整参数的构造函数中进行通用初始化来避免代码重复。
编写传统的复制构造函数有什么好处吗?
进行构造委托的能力与定义复制构造函数或任何其他特殊构造函数的需要无关。如有必要,您需要定义它们。
推荐阅读
- mysql - VB.NET 我正在尝试在 Mysql 中生成一个序列号并将我的返回查询显示到 datagridview 错误
- javascript - 采用多个列表类型的函数的打字稿错误-接口上不存在值
- python - 即使使用 AWS P8 实例,Yolo5 模型训练也会因 CUDA 内存不足而失败
- javascript - 如何解构这个对象数组
- makefile - 为什么这个makefile无限循环,但只在一台机器上?
- python - 将 bigquery 中的所有列转换为浮点数/字符串
- javascript - 解析我的 json 以获取值 - 从 Xcode 发送到 JS 前端的 json
- postgresql - 查找 PostgreSQL PITR 恢复点
- android - 另一个 git 意外挂断 curl openssl errno 104
- asp.net-mvc - 请给出在 ASP .Net MVC 中导入包的快捷键?