Object& const vs. const Object& vs. Object const & [duplicate]

Object& const vs. const Object& vs. Object const & [duplicate]

提问人:afp_2008 提问时间:9/8/2022 最后编辑:afp_2008 更新时间:9/8/2022 访问量:539

问:

以下对 C++ 中模板化对象的引用有什么区别?

template<typename T>
void myFunction(Object<T>& const obj);

template<typename T>
void myFunction(const Object<T>& obj);

template<typename T>
void myFunction(Object<T> const & obj);
C++ 模板 常量 按引用传递

评论

2赞 Nathan Pierson 9/8/2022
这个问题涵盖了你的第二个和第三个问题。“模板化”部分是无关紧要的。这种形式实际上具有很大的误导性,因为它等同于而不是任何一个明显的等价物。Object<T>& constObject<T>&
1赞 Nathan Pierson 9/8/2022
尽管在实践中 gcc 拒绝使用 type 的参数编译函数,因此这可能只是完全无效的语法,而不是 的违反直觉的同义词。不确定这里确定的标准语言。int& constint&
1赞 JaMiT 9/8/2022
相关(指针而不是引用):const int*、const int * const int const * 有什么区别?
1赞 JaMiT 9/8/2022
涵盖您的第一个情况的问题:为什么 C++ 中没有像 const 指针一样的 const 引用?

答:

4赞 The Dreams Wind 9/8/2022 #1
  • Object<T>& const obj- 是对非常量的常量引用(这没有意义,因为引用不能反弹,它总是“常量”);Object<T>
  • const Object<T>& obj- 对常量的引用Object<T>;
  • Object<T> const& obj- 对常量的引用,即与上述相同(只有当关键字在左边找不到任何东西时,该关键字才适用于右边);Object<T>const