gpt4 book ai didi

c++ - 构造函数和赋值运算符

转载 作者:行者123 更新时间:2023-11-28 00:28:09 25 4
gpt4 key购买 nike

我可以通过赋值运算符写一个拷贝构造函数吗?像这样:

A::A(const A * a) {
*this = a;
}

A &A::operator=(const A * a) {
delete str;
str = new char[strlen(a->str)+1];
strcpy(str, a->str);
return *this;

}

还是想弄清楚如果我在上面的例子中做A*a,因为样本来自不同的站点A&a。 C 这会弹出一个应该返回赋值运算符的问题:

A &A::operator=(const A * a)

A * A::operator=(const A * a)

一般问题:我的代码就在上面吗?

最佳答案

最好的解决方案是让 str 成为一个 std::string 然后你就不需要编写自己的复制构造函数或复制赋值运算符。

但假设您必须出于无法与我们分享的不明显原因编写自己的代码。

在那种情况下,提供一些异常安全性的典型方法是实现一个 nothrow 交换函数,然后根据复制构造 + 交换实现复制分配(与您提议的相反,但提供更好的异常复制作业的安全性)

关于c++ - 构造函数和赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24066803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com