带有指向对象指针的操作符函数
Operator functions with pointers to objects
一个新手问题。假设我们有两个随机类的对象,像这样保存在指针中:
RandomClass *obj1 = new RandomClass;
RandomClass *obj2 = new RandomClass;
现在,当你从这些对象调用函数时,你可以简单地这样做:
obj1->randomFunction();
但是如何使用该类中的操作符函数,例如重载的乘法操作符(使用普通对象):
obj1 * obj2
如果这是不可能的,你怎么去解决这个问题(写一个新的函数是不可能的)。对不起,如果这可能是一个愚蠢的问题,但我有点困惑,这是如何与指针算术等工作。
您可以像这样取消对指针的引用:
RandomClass *obj3 = new RandomClass();
*obj3 = (*obj1) * (*obj2);
如果你不再需要你相乘在一起的两个对象,不要忘记适当地清除内存,以及上面的代码将在堆上为obj3
分配新的内存。
-
如果你的变量是指针,你需要一个
*
当你声明他们。我想你也想有两个不同的变量:RandomClass *obj1 = new RandomClass; RandomClass *obj2 = new RandomClass;
-
取消对指针的引用:
result = *obj1 * *obj2;
第一个代码位不是有效的c++(看起来更像Java)。这是有效的c++:
RandomClass* obj1 = new RandomClass;
RandomClass* obj2 = new RandomClass;
要乘以obj1
和obj2
所指向的对象,对它们(*obj1
和*obj2
)解引用。代码可能看起来像这样:
(*obj1) * (*obj2)
obj1
是指针;*obj1
是它指向的东西
我想你的意思是
RandomClass *obj1 = new RandomClass();
RandomClass *obj2 = new RandomClass();
如果你想将两者相乘,你需要改变指针以得到实际的值。
multRes = (*obj1) * (*obj2);
相关文章:
- 我可以将C 17 Capture lambda ConstexPR转换操作符的结果用作函数指针模板非类型参数吗?
- 当delete操作符释放内存时,我为什么需要析构函数
- 为什么操作符的新函数需要强制转换
- 如何使操作符的左操作数<<一个函数
- 如何重载操作符==外模板类使用友元函数
- 在泛型函数中没有匹配操作符==
- Assert()函数抛出一个错误——操作符有问题
- 删除操作符,它们等同于c++中的析构函数
- 复制构造函数,赋值操作符重载
- 强制转换操作符函数在g++中可以很好地编译,但在其他编译器中不行.为什么
- 通过调用Move赋值操作符实现Move构造函数
- 在类赋值操作符函数中,为什么必须返回*this ?
- 有没有一种方法可以通过函数指针来调用操作符函数?
- 如何为代理类实现相等操作符函数
- 如何为嵌套类编写范围解析操作符函数头
- 类不能包含内部定义枚举的操作符函数
- 从结构指针调用重载操作符函数
- 操作符函数和与之相关的编译错误
- 带有指向对象指针的操作符函数
- 复制和交换技术在赋值操作符函数内部使用复制构造函数