返回类型通常为 const T & 或 T const &例子
时间: 2024-12-11 20:24:45 浏览: 20
在 C++ 中,当你需要从 `const` 函数返回一个对象的引用,以便使用者可以访问但不能修改这个对象时,你会使用 `const T&` 或 `T const&` 作为返回类型。这里 `T` 表示任何对象类型,`const` 添加到引用前表明函数自身是 `const` 的,但返回的是非 `const` 对象的引用。
例如:
```cpp
// 假设有一个 class MyClass 可以被修改
class MyClass {
public:
// 定义一个 const 版本的成员函数,返回一个常引用
const MyClass& getReadOnlyInstance() const {
return *this; // 返回当前对象的常量引用
}
};
// 使用时,客户端只能读取,不能修改
MyClass myObject;
const MyClass& readOnly = myObject.getReadOnlyInstance();
readOnly.someProperty = 10; // 报错,试图修改 const 对象
```
在这个例子中,`getReadOnlyInstance` 函数保证了返回的引用不会改变 `MyClass` 实例的状态,因为它是一个常量引用。如果你想返回的是一个临时对象的拷贝(右值),你可以去掉 `const`:
```cpp
MyClass getNonConstCopy(MyClass obj) {
return std::move(obj); // 返回一个临时对象的右值
}
```
这里 `std::move` 操作符用于高效地转移所有权给新的副本,而不会创建额外的拷贝。
阅读全文