2

我们正在学习const面向对象的 c++ 类中的关键字。我们的教授说他故意过分帮助我们学习使用const关键字的所有可能方法。

在我们的任务中,他说:

您的构造函数参数应该是指向常量指针常量数组的常量指针

有人可以向我展示这个参数列表的示例,并解释每个 const 的作用吗?我相信原型应该是这样的:

Square(const char* const []);
  • 其中第一个是指针(在本例中为 char*)
  • 第二个 const 用于数组
  • 但后来我不知道我会把第三个 const 放在哪里

任何帮助将非常感激。

4

2 回答 2

3

让我们来看看:

  1. 指针数组:void * array[10];

  2. 常量指针数组,与“常量数组”相同:void * const array[10]

  3. 指向上述内容的指针:void * const (*pa)[10] = &array;

  4. 指向 (2)的常量指针:void * const (* const pa)[10] = &array;

  5. 上面的一个版本,其中原始数组由指向 const 的指针组成:

    void const * array2[15];
    
    void const * const (* const pa)[15] = &array2;
    

因此,对于任何基础类型和数组大小,这是您的构造函数签名:

struct Foo
{
    template <typename T, unsigned int N>
    Foo(T const * const (* const pa)[N]);

    // ...
};

至于它有什么用处:几乎没有。但理解这一点并没有什么坏处。

于 2012-09-24T23:41:01.163 回答
-1

用 C++ 而不是 C 编写时,它更容易阅读。

const std::array<const T, N>* const
于 2012-09-24T23:47:18.770 回答