【发布时间】:2013-09-26 12:56:47
【问题描述】:
int* p1, p2;
根据 C++ 标准,p1 是指针,而 p2 不是。
我只是想知道为什么 C++ 标准不也将 p2 定义为指针?
我认为这样做是合理的。因为:
C++ 是一种强类型语言。也就是说,给定任何类型 T,声明 T t1, t2; 始终保证 t1 和 t2 具有相同的类型。
但是,p1 和 p2 没有相同类型的事实违反了规则,并且似乎违反直觉。
所以,我的问题是:制定这样一个违反直觉的规则的理由是什么?只是为了向后兼容?
【问题讨论】:
-
这些关于“强类型”和“向后兼容性”的废话是什么?例如,能够在同一行定义一个 int 和一个指向 int 的指针有什么问题?
-
“一个 int 和一个指向 int 在同一行的指针”应该被认为是 ill-style。我想。
-
@xmllmx 您编写与类型名称而不是标识符相关的指针限定符的方式是一种病态,而是。出于这个确切原因,
int *p优于int* p(*限定名称,而不是类型)。 -
别那样做。每行声明多个变量被认为是不好的做法。如果您每行声明一个,这将不成问题。
标签: c++ c pointers types standards