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使用解引用运算符(*)