C++ 重新初始化分配了新pod的pod类

C++ 重新初始化分配了新pod的pod类,c++,C++,关于我是如何来到这里的漫长而无关的故事。。。就我个人而言,我觉得它很整洁,似乎工作得很好,这有什么技术问题吗 struct banana { int size; banana(int size) { this->size = size; } }; int main() { auto b = new banana(5); *b = banana(6); // <- reusing the constructo

关于我是如何来到这里的漫长而无关的故事。。。就我个人而言,我觉得它很整洁,似乎工作得很好,这有什么技术问题吗

struct banana {
    int size;

    banana(int size) {
        this->size = size;      
    }
};

int main() {
    auto b = new banana(5);
    *b = banana(6);    // <- reusing the constructor
    delete b;
}
struct香蕉{
整数大小;
香蕉(整数大小){
这个->大小=大小;
}
};
int main(){
自动b=新香蕉(5);

*B=香蕉(6);//< p>如果你想问:这是OK,并且不会破坏任何C++规则吗?那么,当然,它是有效的。< /P> 与以下内容一样有效:

banana b(5);
b = banana(6);
或:


我不会称之为重新初始化。它只是赋值——从一个实例设置另一个实例的值。

您不是在“重用”这里的构造函数,您只是使用默认赋值运算符和临时构造的对象。而且,手动内存管理总是比使用智能指针更危险。
这有什么技术问题吗?
您不必要地使用了动态分配。而且不安全。构造函数是安全的也非常不必要;类也可能是一个聚合。整个程序是毫无意义的,不仅仅是分配,那又怎样?这是一个最小的例子。另外,如果我处于智能指针的性能影响可以接受的情况下,我会用智能指针来做例子。担心陷阱没有任何意义对于手动内存管理,它是语言的最大优势之一,也是首先使用该语言的主要原因之一。感谢您指出,我在这里调用的实际上是默认赋值运算符,这很有用。@user81993
那又怎样?
您问到是否有问题。我告诉过您问题是。这就是问题所在。
如果智能指针的性能命中是可以接受的
为什么你认为会有性能命中?@eerorika技术问题,任何与实际问题相关的问题都可以。至于智能指针,它们不是免费的。
banana b(5);
banana& br = b;
br = banana(6);