C++ 带有指向对象指针的运算符函数

C++ 带有指向对象指针的运算符函数,c++,pointers,operator-overloading,C++,Pointers,Operator Overloading,一个新手问题。假设我们有两个来自随机类的对象,保存在指针中,如下所示: RandomClass *obj1 = new RandomClass; RandomClass *obj2 = new RandomClass; 现在,当您从这些对象调用函数时,您可以这样做: obj1->randomFunction(); RandomClass *obj3 = new RandomClass(); *obj3 = (*obj1) * (*obj2); (*obj1) * (

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

   RandomClass *obj1 = new RandomClass;
   RandomClass *obj2 = new RandomClass;
现在,当您从这些对象调用函数时,您可以这样做:

   obj1->randomFunction();
RandomClass *obj3 = new RandomClass();
*obj3 = (*obj1) * (*obj2);
(*obj1) * (*obj2)
但是如何使用该类中的运算符函数,例如重载的乘法运算符(使用普通对象):

如果不可能,您将如何着手解决此问题(编写新函数是不可能的)。抱歉,如果这可能是一个愚蠢的问题,但我有点困惑如何与指针算法等工作

  • 如果变量是指针,则在声明它们时需要一个
    *
    。我想你的意思是也有两个不同的变量:

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

    result = *obj1 * *obj2;
    
  • 如果变量是指针,则在声明它们时需要一个
    *
    。我想你的意思是也有两个不同的变量:

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

    result = *obj1 * *obj2;
    

  • 可以按如下方式取消对指针的引用:

       obj1->randomFunction();
    
    RandomClass *obj3 = new RandomClass();
    *obj3 = (*obj1) * (*obj2);
    
    (*obj1) * (*obj2)
    

    如果您不再需要相乘的两个对象,请不要忘记适当地清除内存,因为上面的代码将在堆上为
    obj3

    分配新内存,您可以像这样取消引用指针:

       obj1->randomFunction();
    
    RandomClass *obj3 = new RandomClass();
    *obj3 = (*obj1) * (*obj2);
    
    (*obj1) * (*obj2)
    

    如果不再需要将两个对象相乘,不要忘记适当地清除内存,上面的代码将在堆中分配新的内存,用于<代码> Obj3。< /P> < P>第一位代码无效C++(看起来更像java)。这是有效的C++:

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

       obj1->randomFunction();
    
    RandomClass *obj3 = new RandomClass();
    *obj3 = (*obj1) * (*obj2);
    
    (*obj1) * (*obj2)
    

    obj1
    是指针<代码> *Obj是指它。

    < P>第一位代码不是有效的C++(看起来更像java)。这是有效的C++:

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

       obj1->randomFunction();
    
    RandomClass *obj3 = new RandomClass();
    *obj3 = (*obj1) * (*obj2);
    
    (*obj1) * (*obj2)
    
    obj1
    是指针<代码>*obj1就是它所指向的东西。

    我猜你的意思是

    RandomClass *obj1 = new RandomClass();
    RandomClass *obj2 = new RandomClass();
    
    如果要将两者相乘,则需要遵从指针以获得实际值

    multRes = (*obj1) * (*obj2);
    
    我想你是说

    RandomClass *obj1 = new RandomClass();
    RandomClass *obj2 = new RandomClass();
    
    如果要将两者相乘,则需要遵从指针以获得实际值

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

    @Fredrik Boston-Westman使用解引用运算符(*)@Fredrik Boston-Westman使用解引用运算符(*)