相关疑难解决方法(0)

参考可能比指针更有效吗?

我想知道有时候(取决于平台或编译器或代码中的上下文等)引用是否比指针更有效?

c++ performance

7
推荐指数
4
解决办法
1947
查看次数

c ++运算符重载和多态

多态和运算符重载混合在一起?你不能这样做没有多态性指针,因为它是在解释这个答案,你也可以这样做运营商,超载的指针作为解释在这里.
所以真的没有办法做到这一点,对吧?

c++ polymorphism operator-overloading

4
推荐指数
1
解决办法
8623
查看次数

C++运算符重载指针

我想(为了好奇)为什么在C++中不允许运算符重载指针.我的意思是这样的:

Vector2d* operator+(Vector2d* a, Vector2d* b) { return new Vector2d(a.x + b.x, a.y + b.y); }

Vector2d* a = new Vector2d(1, 1); 
Vector2d* b = new Vector2d(2, 2); 
Vector2d* c = a + b; 
Run Code Online (Sandbox Code Playgroud)

注意'a + b'如何创建一个新的Vector对象,然后只将其地址复制到'c',而不调用复制构造函数.因此,它将解决新的右值引用解决的相同问题.另外,据我所知,它几乎等同于在C#中使用运算符重载时发生的事情(但我可能在这里错了,我从未真正使用过C#),以及为什么在C#中不需要rvalue refs.

是的,rvalue参考解决方案甚至更好,因为它允许基于堆栈的对象,而这种重载会强制所有Vector2d对象都存在于堆上,但是,它似乎很容易在编译器中实现,可能在rvalue refs到来之前的几年.使用自定义分配器,它甚至不会那么慢.

因此,这只是非法的,因为"最不意外"的原则,还是有其他原因?

c++ operator-overloading rvalue-reference

4
推荐指数
1
解决办法
5752
查看次数