Re: const
От: desco США http://v2matveev.blogspot.com
Дата: 13.10.06 07:16
Оценка: +1
Здравствуйте, nikov, Вы писали:

получается, что выражение new int() на этапе компиляции заменяется на default(int) (0), исходя из

14.5.10.1 Object creation expressions
<skipped>
The compile-time processing of an object-creation-expression of the form new T(A), where T is a classtype,
a value-type, or a type-parameter, and A is an optional argument-list, consists of the following steps:
• If T is a value-type and A is not present:
o The object-creation-expression is a default constructor invocation. The result of the object-creation expression
is a value of type T, namely the default value for T
as defined in §11.1.2.

то есть const int i = new int() эквивалентно выражению const int i = 0, которое в этом случае допустимо
const
От: nikov США http://www.linkedin.com/in/nikov
Дата: 13.10.06 07:04
Оценка:
Господа, почему компилируется следующий код?

class Stuff
{
    const int x = new int();
}


Ведь в спецификации мы имеем следующее:

7.15 Constant expressions
..................
. The following constructs are permitted in constant expressions:
· Literals (including the null literal).
· References to const members of class and struct types.
· References to members of enumeration types.
· Parenthesized sub-expressions, which are themselves constant expressions.
· Cast expressions, provided the target type is one of the types listed above.
· The predefined +, –, !, and ~ unary operators.
· The predefined +, –, *, /, %, <<, >>, &, |, ^, &&, ||, ==, !=, <, >, <=, and >= binary operators, provided each operand is of a type listed above.
· The ?: conditional operator.
The following conversions are permitted in constant expressions:
· Identity conversions
· Numeric conversions
· Enumeration conversions
· Constant expression conversions
· Implicit and explicit reference conversions, provided that the source of the conversions is a constant expression that evaluates to the null value.
Other conversions including boxing, unboxing and implicit reference conversions of non-null values are not permitted in constant expressions.

const
От: Аноним  
Дата: 13.10.06 07:21
Оценка:
А ты переведи, то что сам сюда запостил. Тогда поймешь.

Две капли морфия облегчат тебе жизнь.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.