相关疑难解决方法(0)

析构函数是否可以超载?

enable_if doc页面说:

构造函数和析构函数没有返回类型; 额外的参数是唯一的选择.

析构函数是否可以超载?

c++ syntax destructor overloading

13
推荐指数
2
解决办法
3296
查看次数

为什么析构函数不接受C++中的参数?

最近,我遇到了一个示例,我的析构函数需要一个参数.

我正在开发一个内部管理内存的C包,并跟踪自己的参数分配和释放.我不想打破这个.

我编写了一个C代码,它初始化了我自己的数据结构并在最后释放它们.当我决定迁移到C++时,我意识到分配数据结构并释放它们应该放在构造函数和析构函数中.所以我将这些函数更改为构造函数和析构函数.我现在的问题是我需要使用一个参数传递给析构函数以释放分配的数据; 该参数不在我自己的代码中,而且是C,我不想搞砸.

我的问题是双重的:

为什么C++首先决定不接受析构函数中的参数?我有什么选择?(我可以保存一个指向该参数的指针,或者以某种方式在我的析构函数中调用该函数,但它似乎不是C++编程的好习惯)

更新:添加一些代码这是我想象的类:

class paru_symbolic/* paru_symbolic*/
{
    public:
        paru_symbolic ( cholmod_sparse *A, cholmod_common *cc ); // constructor
        ~paru_symbolic (cholmod_common *cc ); // destructor

        // -------------------------------------------------------------------------
        // row-form of the input matrix and its permutations
        // -----------------------------------------------------------------------
              //--- other stuff
                     ...
};
Run Code Online (Sandbox Code Playgroud)

这是我当前的C构造函数:

#include "Parallel_LU.hpp"
paru_symbolic *paru_sym_analyse
(
 // inputs, not modified
   cholmod_sparse *A,
 // workspace and parameters
   cholmod_common *cc ){   

    DEBUGLEVEL(0);
...
   aParent = (Int*) paru_alloc (m+nf, sizeof(Int),cc);

...
}
Run Code Online (Sandbox Code Playgroud)

和析构函数:

void paru_freesym (paru_symbolic **LUsym_handle,
            // …
Run Code Online (Sandbox Code Playgroud)

c++ memory-management

0
推荐指数
1
解决办法
575
查看次数

标签 统计

c++ ×2

destructor ×1

memory-management ×1

overloading ×1

syntax ×1