int* p1, p2;
根据 C++ 标准,p1
是指针但p2
不是。
我只是想知道为什么 C++ 标准也没有定义p2
为指针?
我认为这样做是合理的。因为:
C++ 是一种强类型语言。也就是说,给定任何类型 T,该语句T t1, t2;
总是保证t1
并且t2
具有相同的类型。
p1
然而,和p2
不具有相同类型的事实打破了规则,并且似乎违反直觉。
所以,我的问题是:制定这样一个违反直觉的规则的理由是什么?只是为了向后兼容?
int
是基本类型,*
或者&
是前缀说明符,也称为声明符运算符。这意味着*
对它之后的变量进行操作。它不是int
. 我认为这就是原因。
对您没有太大帮助的简单答案是,这样做是为了与 C 向后兼容,它具有完全相同的语法来定义变量。该设计的基本原理必须来自 C 的创建者,而我真的不知道。
我所知道的是,我在不同公司使用的大多数编码指南都禁止在同一个语句中定义多个变量,一旦避免这种情况,一切都变得易于阅读和维护。C 和 C++ 中的声明语法并不是它们的真正优势之一,但它就是这样。