我正在尝试通过一些网络教程学习C++.我没有可用的编译器,否则我会尝试这个.我不确定const指针是什么意思.这只是意味着它总是指向相同的内存地址吗?你为什么要这样做?以下代码是否合法?
...
int * const aPointer = new int;
... //do something with aPointer
delete aPointer;
... //do something else, including possibly more 'new' statements
aPointer = new int;
...
Run Code Online (Sandbox Code Playgroud)
Jef*_*f L 18
记住const如何使用指针的简单方法是记住它总是适用于它左边的任何内容,除非它是最左边的关键字,在这种情况下它适用于右边.
例子:
指向常量char 的指针:指针可以更改为指向其他内容,但它最初指向的char不能更改值.
const char * p;
Run Code Online (Sandbox Code Playgroud)
指向char的常量指针: 指针不能更改为指向其他任何指针,但它指向的char可以更改值.
char *const p;
Run Code Online (Sandbox Code Playgroud)
指向常量char的常量指针: 指针不能更改为指向其他任何内容,并且它指向的char不能更改值.
const char *const p;
Run Code Online (Sandbox Code Playgroud)
Const指针可能意味着一些不同的东西.我建议在这个问题上查看C++ FAQ Lite.
你可以有:
const int* p;
int* const p;
const int* const p;
Run Code Online (Sandbox Code Playgroud)
这三个意味着不同的东西.是的,这有点令人困惑.
在你的情况下,你有第二个,这意味着你有一个指向非常量对象的常量指针.也就是说,您可以通过指针更改整数的值,但不能更改指针指向的内容.所以你发布的代码不合法.