常量指针指向常量指针的常量数组

时间:2012-09-24 23:28:08

标签: c++ const

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

在我们的任务中,他说:

  

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

有人可以告诉我这个参数列表的示例是什么样的,并解释每个const的作用?我相信原型看起来像这样:

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

任何帮助都会非常感激。

2 个答案:

答案 0 :(得分: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;
    
  6. 所以这是你的构造函数签名,对于任何底层类型和数组大小:

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

    关于什么是有用的:几乎没有任何东西。但理解这一点并不会有害。

答案 1 :(得分:-1)

用C ++编写时,阅读起来要容易得多,而不是C语言。

const std::array<const T, N>* const