C++ 括号可以将任意标识符作为参数吗?C++;

C++ 括号可以将任意标识符作为参数吗?C++;,c++,C++,例如,是 (const int)* someInt; 有效代码 如果是的话,这句话与 const int* someInt; ?您可以对内部的任何类型执行c样式转换,但是您尝试转换的表达式可能无法以这种方式转换 在强制转换的右侧不能有任何任意类型。您需要一个用户定义的转换运算符来执行转换。这对我来说似乎是有效的,因为您每次都可以有一个指向常量值的指针 我不认为两者之间存在差异。如果someInt被定义为 int *someInt; 然后 这是有效的。否则您将遇到错误 将指针指向int,并将

例如,是

(const int)* someInt;
有效代码

如果是的话,这句话与

const int* someInt;

您可以对内部的任何类型执行c样式转换,但是您尝试转换的表达式可能无法以这种方式转换


在强制转换的右侧不能有任何任意类型。您需要一个用户定义的转换运算符来执行转换。

这对我来说似乎是有效的,因为您每次都可以有一个指向常量值的指针


我不认为两者之间存在差异。

如果
someInt
被定义为

int *someInt;
然后

这是有效的。否则您将遇到错误

将指针指向
int
,并将结果值强制转换为
const int
。 是的,这个没有赋值的语句是浪费的

int rtn = (const int)* someInt;

您可以在表达式周围放置任意多个括号,而无需更改其含义。但不能对类型执行相同的操作。特别是,正如其他人所指出的,代码中的括号将含义从声明更改为强制转换。

这是定义还是强制转换?(好像是一个定义)我心里有定义。至少第二条语句是一个定义,但您可以告诉我第一条语句的情况。如果此代码前面没有任何内容(如bla=…),则这两条语句都是定义。@Quonux:否,第一条语句是一个强制转换,无论它是否是更大表达式的一部分。这些是变量定义,而不是强制转换。例如,如果someInt定义为int*,则不是。注意:(const int)可以是其他类型,只要someInt是指向某物的指针(不是必需的int)。此外,如果您最初的意图是进行转换,则可以将语法更正为(const int*)someInt;ttchong:“只要someInt是指向某物的指针”。可以取消引用(而不是
void*
),并可以转换为int(不是结构mystruct*)
int rtn = (const int)* someInt;