c++ - 带 const 的模板函数参数

标签 c++ data-structures

我知道引用并不像点。引用不是对象。所以没有const引用。

const int ci = 1024;
const int &rl = ci;

我们不能写int const &rl = ...但是今天,我学习二叉树源代码:

template <typename T> //take e as the node insert the left child of the tree.
BinNodePosi(T) BinNode<T>::insertAsLC(T const & e) {  return lChild = new BinNode(e, this);  }

我对它的参数感到困惑:T const & e。为什么不const T& e?我认为后者是对的..也许我的问题太简单了,无法发布在这里。与数学不同,研究级别和学习级别分别有两个方面:MathOverFlow 和 math.stackexchange ..我找不到 stackoverflow 的初级网站..所以我将其发布在这里。请原谅我。非常感谢。

最佳答案

const 适用于紧邻其左侧的事物,除非它是类型说明符序列中的第一项,在这种情况下,它适用于下一项。

因此,T const & econst T & e 完全相同。您似乎正在考虑的非法情况是 T & const e。同样,指向可变对象的不可变指针将被声明为T * const e

就我个人而言,我避免将 const 放在第一位,因为它是语法的特殊情况。

关于c++ - 带 const 的模板函数参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23123287/

相关文章:

c++ - 从头文件中的命名空间访问类型

c++ - qt designer 的自定义小部件插件是不可见的

data-structures - 覆盖数据结构?

c++ - C++ 标准的哪一部分要求 set::erase 立即调用析构函数

ios - 同步排队异步操作

c# - (更多)线程二叉树中旋转节点时的高效锁定

java - 如何在 Trie 数据结构中实现 remove 方法?

c++ - gcnew Image CLI/C++ 时的无效操作

c++ - sql server 错误日志的输出错误

c++ - wxWidgets BoxSizer 没有扩展到全宽