gpt4 book ai didi

c++ - `make_unique` 相对于普通构造函数的优势?

转载 作者:太空宇宙 更新时间:2023-11-04 15:14:51 27 4
gpt4 key购买 nike

我想知道使用智能指针(如下面代码中的 Box3 )声明 Box 是否比(对我来说更经典)声明有任何优势调用构造函数(如下面代码中的 Box2)或者这两种构造之间的差异本质上是主观偏好的问题。

#include <iostream>
#include <memory>

class Box{
private:
double length;
double width;
double height;
public:
Box(double lengthValue, double widthValue, double heightValue);
double volume() const;
};
Box::Box(double lValue, double wValue, double hValue):
length {lValue}, width {wValue}, height {hValue} {
}
double Box::volume() const {
return length * width * height;
}
int main() {
Box Box2 {1.5,2.5,3.5};
std::cout << Box2.volume() << std::endl;
auto Box3 = std::make_unique<Box>(1.5,2.5,3.5);
std::cout << Box3->volume() << std::endl;
return 0;
}

最佳答案

相对于 C++ 中的其他基本操作,动态分配是一项开销很大的操作,因此您应该避免在不需要的地方使用它。

也就是说,一个很大的区别是动态分配很慢。

另一个区别是您可以用它做什么。通过移动所有权,可以使动态分配的实例在创建它的 block 之后持久存在。相反,当执行离开 block 时,直接声明的变量将不复存在。

关于c++ - `make_unique` 相对于普通构造函数的优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36504950/

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