C++ 当T是指针类型时,常数T的含义是什么?
考虑到:C++ 当T是指针类型时,常数T的含义是什么?,c++,templates,pointers,c++11,constants,C++,Templates,Pointers,C++11,Constants,考虑到: char* ptr; // 1) a non-constant pointer to a non-constant char const char* ptr; // 2) a non-constant pointer to a constant char char* const ptr; // 3) a constant pointer to a non-constant char const char* const ptr; // 4)
char* ptr; // 1) a non-constant pointer to a non-constant char
const char* ptr; // 2) a non-constant pointer to a constant char
char* const ptr; // 3) a constant pointer to a non-constant char
const char* const ptr; // 4) a constant pointer to a constant char
当我写作时:
#include <iostream>
template <class T>
void f(const T ptr)
{;}
int main(int argc, char* argv[])
{
char a = 'a';
f(&a);
return 0;
}
#包括
模板
空f(常数ptr)
{;}
int main(int argc,char*argv[])
{
字符a='a';
f&a;
返回0;
}
什么类型的
ptr
:2)或3)?T
是指向非常量char
的指针,因此const T
是指向非常量char
的常量指针 T
是指向非常量char
的指针,因此const T
是指向非常量char
的常量指针 为什么不试试呢?我发现如果将常量放在类型之后,指针声明就不那么模棱两可了,例如:t const*const
,并且使用旧的从右到左读取指针类型规则。为什么要进行向下表决,我不认为这是一个很糟糕的问题。为什么不试试呢?我发现如果在类型后加上常量,指针声明就不会那么含糊不清了,比如:t const*const
,并且使用旧的从右到左读取指针类型规则。为什么不投票,我认为这不是一个很糟糕的问题。