鉴于:

Class A
{
     private:
       double **CR;
     public:
       double **compute2D();
};

假设我有一个私有(private)2D Array成员:
double **CR;

我有一个成员函数:
Double ** Compute2D()

函数computer2D将返回CR

这是不好的做法吗?
为什么?
我应该使用getter和setter函数返回它吗?

还有一个问题:我是否正确使用了垃圾收集器?
A::~A()
{
    //Delete 2D array
    for(int i = 0; i < Rows; ++i)
    {
        delete [] CR[i];
    }

    delete [] CR;
}

最佳答案

如果希望该类成员在类之外可读,则重新定义类方法就很好了,这完全取决于您要完成的工作。至于使用getter方法,您已经是; “好的做法”是使用此类方法为您的类创建更统一的封装设置,从而使以后更轻松地编辑类。即使您的函数做了其他事情(在这种情况下,它是二维计算的),它仍然是一种getter方法。

但是,在这种情况下,您不会返回任何值。您将返回指向值的双指针。 这意味着用户将可以在类之外编辑数据(我猜是数组),这不是一件好事。您应该在返回数据之前执行数据的深层复制。

至于正确使用垃圾收集器:是的。尽管在C++中没有将其称为垃圾收集器,但将其简称为释放内存。垃圾收集器是自动释放内存的系统的名称。

关于c++ - 退课是不好的做法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17924545/

10-11 18:41