我对C ++很陌生,我还不太了解指针。
这没关系,我有2个非指针对象:
Vec2D A(0, 0), B(10, 10);
Vec2D C = A-B;
但是如果一个是指针?
Vec2D::minus(Vec2D B) {
Vec2D that = Vec2D(this->x(), this->y());
return that-B;
}
所以问题是:我怎样才能将指针this
与-
操作一起使用?
另外,我不明白在我的方法中构造了多少个对象,如何通过一些引用来优化内存消耗..
答案 0 :(得分:1)
如果我正确地提出了你的问题......“这是一个指针,如何使用需要非指针的方法操作它和其他指针?”
您使用取消引用运算符*
例如:
Vec2D that = *this;
回答你的第二个问题:
minus
Vec2D(this->x(), this->y())
创建(但可能会被优秀的优化编译器删除为临时文件)that
)that-B
您如何优化它?使用参考...
Vec2D Vec2D::minus(const Vec2D& B) {
return that-*this;
}
在Vec2D上实现操作符也可以使用引用... 通常,将参数作为(const)引用传递。
显然,你不能对返回值做同样的事(尝试,编译器会抱怨..);也有这些技术(特别是在CG /游戏中,使用向量,我看到对象池使用了很多;对于那些返回引用/指针的人实际上是可行的,但它是相当高级的东西)
答案 1 :(得分:0)
“this”指针是一个自动生成的指针,指向包含被调用方法的对象。
如果您致电A.minus(B)
,则“this”指针指向A。