gpt4 book ai didi

C++:-> 运算符重载:以不同方式处理 const/nonconst 访问

转载 作者:行者123 更新时间:2023-11-30 01:29:41 25 4
gpt4 key购买 nike

我正在构建一个引用计数系统并定义了一个原型(prototype)模板类,它表示对将要使用的对象的所有引用。

我被卡住的地方是我必须区分通过引用对这些对象的 const 和非 const 访问。如果访问是常量(只读,或底层对象的调用方法被标记为常量),则一切正常 - 但如果不是 - 可能必须先创建对象的拷贝。

我的引用类的简化版本:

template< class T >
class CRef
{
protected:
T* ptr;

public:

T* const* operator ->() const { return ptr; };
T* operator ->() { printf( "Non-const access!" ); return ptr; };

};

问题是,只有非 const -> 运算符重载函数被调用,即使在访问基础对象类型的 const 函数时也是如此。

  • 如何正确调用常量解引用重载函数?

最佳答案

常量对象在常量对象上被调用。如果您想要调用 const ->,请将您拥有的对象引用转换为 const 或提供获取对象的 const 版本的方法。

关于C++:-> 运算符重载:以不同方式处理 const/nonconst 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com