一个参数中包含2个常量
2 constants in one parameter
我正在学习《程序员C++》一书中的C++。在"模板"部分,有这样一个代码:
template<typename T>
void printArray(const T * const array, int size)
{
for (int i = 0; i < size; i++)
{
cout << array[i] << " ";
}
cout << endl;
}
我的问题是,函数中第一个参数的常数。我从未见过一个参数中有两个常量。我试着去实现,但我做不到。谢谢你的帮助。
const T * const
的意思是:指向常数T的常数指针。这意味着指针和指向的T
都是常数。
读取此类参数的一个好规则是从右向左读取。
在您的示例中,您有一个指向T
类型的const
对象的const
指针。这意味着您无法更改指针指向的位置或指针指向的对象。
实际上,您可以在一行中的更多位置设置const。以这个声明为例:
class MyClass {
public:
const std::string& get_name(const int * const id) const;
};
在这种情况下,函数get_name
是常量,不能修改MyClass
的实例。它接受一个指向常量整数的常量指针,并返回一个对字符串的常量引用。
如果您想在使用const
(以及C++的其他部分)时了解更多关于最佳实践的信息,我强烈推荐Bruce Eckel的《有效的C++:改进程序和设计的55种特定方法》一书。
语法只是告诉有一个指针是const,它指向的东西也是const。
要了解更多信息,我建议您查看:
http://www.parashift.com/c++-faq/const-ptr-vs-ptr-const.html
http://www.parashift.com/c++-faq/const-correctness.html
相关文章:
- 如何在for循环中包含两个索引值的测试条件
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- 即使我没有包含多个文件,C++中的多个定义错误
- 实现包含多个 QQuickPaintedItems 的 QQuickView 的滚动
- 如何存储包含多个空格的字符串 c++
- 如果代码包含多个复杂度循环,如何计算复杂度
- 查找包含 N 个元素的数组的最小值和最大值
- 将包含多个元素的字符串作为输入并转换为矢量 C++
- 我怎么知道数组包含多少个元素C++?
- C++ 如何在包含两个变量的结构中存储与变量不同数量的值?
- 项目中包含多个相同的头文件:C与C++
- 如何检查一个字符串是否包含多个其他字符串?
- 带有自动initializer_list包含多个表达式
- 释放包含多个向量的结构的内存
- 如何检查数组是否包含多个元素?
- 如何在 arduino 库中包含多个目录
- std::bind to a std::variant 包含多个 std::函数类型
- C++11 向量包含 2 个不同的子类,但不能同时进行
- 给定一个包含 n 个整数和一个整数 x 的未排序数组 A,重新排列 A 中的元素
- 评估 NxN 矩阵中最大正方形的面积,该矩阵最多包含 K 个(随机放置)