c++ - C++ 中的直接 VS 复制初始化
问题描述
嗨,我正在尝试了解直接和复制初始化的工作原理,因此这个示例的输出我无法理解。
class DeletedCopy
{ public:
DeletedCopy(const DeletedCopy&) = delete;
DeletedCopy(DeletedCopy&) = delete;
DeletedCopy()
{
std::cout<<"DeletedCopy Default constructor "<<std::endl;
}
DeletedCopy(DeletedCopy &&)
{
std::cout<<"DeletedCopy move constructor"<<std::endl;
}
};
class NAME
{
private:
std::string name;
DeletedCopy temp;
public:
NAME() = default;
NAME(const NAME& _name): name(_name.name)
{
std::cout<<"Copy constructor ran"<<std::endl;
}
NAME(DeletedCopy d): name("v"),temp(std::move(d))
{
std::cout<<"explicit constructor NAME"<<std::endl;
}
};
int main()
{
cout << "Hello World" << endl;
NAME name3 = DeletedCopy();//this works and prints 3 lines on screen.
NAME name4(DeletedCopy());//this doesn't print anything on console. Why doesn't this print anything. Is this statement UB
return 0;
}
在此示例中,当我使用直接初始化时,控制台上没有打印任何内容。如果我使用复制初始化,那么我会在控制台上打印 3 行。为什么直接初始化案例不起作用。
解决方案
推荐阅读
- office-ui-fabric - 如何在流利的 ui react Dropdown 控件中从 API 响应中设置动态选项?
- python - 如何将pickle文件的文件夹转换为单个csv文件
- ios - 无法在 iOS 中连接 firebase crashlytics
- latex - 如何在 LaTeX 中编写标题页?
- javascript - 延迟加载缩略图时阻止 YouTube Cookie
- java - 在 pkcs7 中验证 ECDSA 签名时出错
- amazon-web-services - AWS Key Management Service 散列和加密
- postman - 在预请求脚本中获取环境变量时未解析邮递员嵌套变量
- uipath - UiPath 自动化协助
- java - java.lang.NoSuchMethodError: org.apache.wicket.request.cycle.RequestCycle.find(Ljava/lang/Class;)Lorg/apache/wicket/request/IRequestHandler;