运算符函数具有指向对象的指针

时间:2013-04-16 18:49:30

标签: c++ pointers operator-overloading

一个新手问题。假设我们有一个来自随机类的两个对象,保存在这样的指针中:

   RandomClass *obj1 = new RandomClass;
   RandomClass *obj2 = new RandomClass;

现在,当你从这些对象中调用一个函数时,你可以这样做:

   obj1->randomFunction();

但是如何使用该类的运算符函数,例如重载的乘法运算符(使用普通对象):

   obj1 * obj2

如果不可能,你会如何解决这个问题(写一个新功能是不可能的)。很抱歉,如果这可能是一个愚蠢的问题,但我对如何使用指针算法等问题感到困惑。

4 个答案:

答案 0 :(得分:2)

您可以取消引用指针,如下所示:

RandomClass *obj3 = new RandomClass();
*obj3 = (*obj1) * (*obj2);

如果您不再需要将两个对象相乘,请不要忘记正确清除内存,以及上面的代码将在堆上为obj3分配新内存。

答案 1 :(得分:1)

  1. 如果您的变量是指针,则在声明变量时需要*。我认为你的意思也有两个不同的变量:

    RandomClass *obj1 = new RandomClass;
    RandomClass *obj2 = new RandomClass;
    
  2. 取消引用指针:

    result = *obj1 * *obj2;
    

答案 2 :(得分:1)

第一部分代码无效C ++(看起来更像Java)。这是有效的C ++:

RandomClass* obj1 = new RandomClass;
RandomClass* obj2 = new RandomClass;

要将obj1obj2指向的对象相乘,请取消引用它们(*obj1*obj2)。代码可能如下所示:

(*obj1) * (*obj2)

obj1是一个指针; *obj1就是它指向的东西。

答案 3 :(得分:1)

我认为你的意思是

RandomClass *obj1 = new RandomClass();
RandomClass *obj2 = new RandomClass();

如果要将两者相乘,则需要将指针推迟到达实际值。

multRes = (*obj1) * (*obj2);