一个参数中包含2个常量

2 constants in one parameter

本文关键字:包含 2个 常量 参数 一个      更新时间:2023-10-16

我正在学习《程序员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