2010-07-14 1 views
1

Например, этоМогут ли скобки принимать произвольные идентификаторы в качестве аргументов? C++

(const int)* someInt; 

правильный код?

Если да, то это заявление отличается от

const int* someInt; 

?

+0

Это определение или литье? (похоже на определение). – Quonux

+0

Я имел в виду определения. По крайней мере, второе утверждение является определением, но вы расскажете мне о первом утверждении. – user383352

+0

Если ничего не находится перед этим кодом (например, bla = ...), то оба являются определениями. – Quonux

ответ

2

Вы можете поставить сколь угодно много скобок вокруг выражений без изменения смысла. Но вы не можете делать то же самое с типами. В частности, как указывали другие, parenthese в вашем коде изменяет значение из декларации в литье.

0

Вы можете сделать стиль c с любым типом внутри, но выражение, которое вы пытаетесь выполнить, не может быть выполнено таким образом.

У вас не может быть произвольного типа с правой стороны отливки. Для выполнения преобразования вам нужен оператор преобразования, определенный пользователем.

+0

Это _переменные определения_, а не отливки. – sbi

+0

Нет, если someInt определен как int *, например. –

0

Это кажется для меня действительным, потому что вы можете каждый раз указатель на постоянное значение.

Я не думаю, что между двумя существует разница.

0

если someInt определяется как

int *someInt; 

затем

(const int)* someInt; 

является действительным. Иначе вы столкнетесь с ошибкой.

Вы полагаете, что указатель на int отличен от const int. И да, это заявление без задания, напрасно.

int rtn = (const int)* someInt; 
+0

Примечание: (const int) может быть другим типом, если someInt является указателем на что-то (не обязательно int). – ttchong

+0

Кроме того, если вы оригинальное намерение сделать актерский состав, вы можете исправить синтаксис (const int *) someInt; – ttchong

+1

ttchong: «пока someInt является указателем на что-то» .., который может быть разыменован (не 'void *') и может быть передан в int (а не 'struct mystruct *') –

Смежные вопросы