c++ - 删除通过取消引用新对象初始化的对象

标签 c++ class object constructor

我有以下类(class):

现在我一直在考虑以这种方式实现我的构造函数:

基本上取消对新操作返回的对象的引用。 现在......这感觉不对,我可能应该使用指针来工作,但我想挑战自己,也许让它工作并学习新的东西。

所以我的问题是删除这个对象......我的 Dense 析构函数不起作用,因为我有这样的东西:

但显然我收到了这个错误:

free(): 无效指针

那么我怎样才能用我实现这个的方式释放分配的内存呢?

谢谢。

最佳答案

没必要搞得这么复杂。您可以直接从初始化列表中调用构造函数。这里完全不需要new。此外,您不需要delete 那些对象。如果 Dense 被销毁,它们的析构函数将被自动调用。

Dense::Dense(): weights(), //Calls constructor Matrix()
                bias(), //Calls constructor Matrix()
                act(ActivationType::Relu), //Calls constructor Activation(ActivationType::Relu)
                input() //Calls constructor Matrix()
{}


此外,您尝试使用指针执行的操作将不起作用。例如&bias就是成员变量bias的地址,与new Matrix()返回的指针无关。

关于c++ - 删除通过取消引用新对象初始化的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58411007/

相关文章:

c++ - 友元函数有哪些安全风险?

c++ - 什么是 undefined reference /未解析的外部符号错误,我该如何解决?

java - 如何获取对象所有字段的标题

php - 转换 Javascript 关联对象并在 PHP 中输​​出

c++ - QT QTableWidget::item() 返回 nullptr,即使 widget 分配给它

c++ - 在非限定 id 之后的静态数据成员定义中使用的名称

java - Kotlin 数学数字泛型类

c++ - 在类层次结构中初始化变量

C++ 从类头文件访问全局整数

javascript - 在不知道深度的情况下移除另一个对象内的对象