![](/img/trans.png)
[英]How do I store the value of a register into a memory location pointed to by a pointer?
[英]How do I return the value pointed to by a pointer?
我有一个类成员定义为:
someType* X;
我觉得它像:
someType* getX() {return x;}
我想得到的值而不是指针,即:
someType getX() {return x;} //this is wrong
这个的正确语法是什么? 我如何获得值而不是指针?
someType getX() {return *x;}
请注意,这会按值返回x
,即它会在每次返回*时创建x
的副本。 所以(取决于someType
是什么)你可能更喜欢返回引用 :
someType& getX() {return *x;}
对于非基本类型,建议通过引用返回,其中构造成本可能很高,并且对对象的隐式复制可能会引入细微的错误。
* 在某些情况下,可以通过返回值优化对此进行优化 ,正如@ paul23在下面正确指出的那样。 但是,安全行为一般不依赖于此。 如果您不希望创建额外的副本,请通过返回引用(或指针)在编译器和人类读取器的代码中明确说明。
someType getX() const { return *x; }
或者,如果someType
复制someType
很昂贵,请通过const
引用返回:
someType const &getX() const { return *x; }
注意方法上的const
限定符。
SomeType getX()
{
// SomeType x = *x; // provided there is a copy-constructor if
// user-defined type.
// The above code had the typo. Meant to be.
SomeType y = *x;
return y;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.