C++重载运算符

-1 c++ overloading operator-keyword

我在我的程序中遇到了重载运算符"+"," - ","/"和"*"的问题.基本上我有一个对象,它是动态分配的double值数组.我有整个程序,但我无法克服那些重载.

我的构造函数看起来像这样:

table::table(int size) {
    this->size = size;
    tab = new double[size];
    count++;
}
Run Code Online (Sandbox Code Playgroud)

我写过类似的东西:

table & table::operator-(const table &tab3 )
{
        table * tab_oper2 = new table(size);
        for(int i=0; i< tab3.size; i++) 
        {
            (*this).tab[i] -= tab3.tab[i];
        }
        return *this;
}
Run Code Online (Sandbox Code Playgroud)

这通常是有效的,但通常不是这样做的好方法.我的导师告诉我尝试将(*this)切换到*tab_oper2,将其作为参考返回,但它不起作用.拜托,有人能告诉我怎么做得好吗?

Jam*_*nze 5

C++是一种面向价值的语言; 返回table(而不是a table&).在局部变量中构造返回值,并将其返回.并且不要忘记三个规则:给定您显示的小代码,您将需要一个复制构造函数,一个赋值运算符和一个析构函数.(当然,如果您使用std::vector,而不是new[]所有这些都将为您照顾.)