带有指向对象指针的操作符函数

Operator functions with pointers to objects

本文关键字:操作符 函数 指针 对象      更新时间:2023-10-16

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

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

现在,当你从这些对象调用函数时,你可以简单地这样做:

   obj1->randomFunction();

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

   obj1 * obj2

如果这是不可能的,你怎么去解决这个问题(写一个新的函数是不可能的)。对不起,如果这可能是一个愚蠢的问题,但我有点困惑,这是如何与指针算术等工作。

您可以像这样取消对指针的引用:

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

如果你不再需要你相乘在一起的两个对象,不要忘记适当地清除内存,以及上面的代码将在堆上为obj3分配新的内存。

  1. 如果你的变量是指针,你需要一个*当你声明他们。我想你也想有两个不同的变量:

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

    result = *obj1 * *obj2;
    

第一个代码位不是有效的c++(看起来更像Java)。这是有效的c++:

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

要乘以obj1obj2所指向的对象,对它们(*obj1*obj2)解引用。代码可能看起来像这样:

(*obj1) * (*obj2)

obj1是指针;*obj1是它指向的东西

我想你的意思是

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

如果你想将两者相乘,你需要改变指针以得到实际的值。

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