msc*_*msc 3 c++ pointers using const c++11
这里,const
指针保存const
变量的地址.喜欢 :
#include <iostream>
int main()
{
const int i = 5;
const int* ptr = &i;
}
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是,如果我使用(类型别名),如:
#include <iostream>
using intptr = int*;
int main() {
const int i = 5;
const intptr ptr = &i;
}
Run Code Online (Sandbox Code Playgroud)
GCC编译器出错.[现场演示]
为什么指针不适用于using
Type别名?
const intptr ptr
是一个等效的int * const ptr
- const指向非const int的指针,而不是const int * ptr
指向const int的非const指针.
如果您发现指针声明的这种从右到左的读取顺序令人困惑,您可以使用Straight声明库,它提供别名模板以从左到右的读取顺序声明指针类型:
const ptr<int> p; // const pointer to non-const int
ptr<const int> p; // non-const pointer to const int
Run Code Online (Sandbox Code Playgroud)