1

我正在从“C++ for Programmers”一书中学习 C++。在“模板”部分,有这样的代码:

template<typename T>
void printArray(const T * const array, int size)
{
    for (int i = 0; i < size; i++)
    {
        cout << array[i] << " ";
    }

    cout << endl;
}

我的问题是,函数中第一个参数的常量。我从未在一个参数中看到两个常量。我试图意识到,但我做不到。感谢您的帮助。

4

3 回答 3

4

const T * const表示:指向常量 T 的常量指针。这意味着指针和T指向的都是常量。

读取此类参数的一个好规则是从右到左读取

于 2013-07-22T23:43:16.437 回答
1

在您的示例中,您有一个const指向consttype 对象的指针T。这意味着您不能更改指针指向的位置或它指向的对象。

实际上,您可以在一行中的更多位置使用 const。以这个声明为例:

class MyClass {
public:
    const std::string& get_name(const int * const id) const;
};

在这种情况下,函数get_name是常量,不能修改MyClass. 它接受一个指向常量整数的常量指针,并返回一个对字符串的常量引用。

如果您想在使用const(以及 C++ 的其他部分)时了解更多关于最佳实践的信息,我强烈推荐 Bruce Eckel 的书Effective C++: 55 Specific Ways to Improvement Your Programs and Designs

于 2013-07-22T23:43:11.937 回答
0

语法只是告诉你有一个指针是 const,它指向的东西也是 const。

如需更多阅读,我建议您查看:

http://www.parashift.com/c++-faq/const-ptr-vs-ptr-const.html

http://www.parashift.com/c++-faq/const-correctness.html

于 2013-07-22T23:42:47.223 回答