2015-09-07 6 views
1

Вот некоторые части из cpprefrence: http://en.cppreference.com/w/cpp/language/implicit_castC++ неявных преобразований: Порядок преобразований

Неявной последовательность преобразования состоит из следующих, в следующем порядке:

1) нулевой или одной стандартной последовательность конверсии

2) ноль или один определенный пользователем преобразования

3) ноль или один стандартная последовательность преобразования

Я думаю, 1) -> 2) или 2) -> 3) порядок конвертации является общим. Но есть пример для 1) -> 2) -> 3)?

ответ

2

Что об этом:

struct X { 
    X(int a) {} 
}; 

const X x = 5.0; 

Сначала есть стандартное преобразование из double в int, то определяемые пользователем преобразование из int в X, то стандартное преобразование из X в const X. (Квалификационная корректировка от non-const до const является видом стандартного преобразования в соответствии с ссылкой на C++.)

Я не уверен на 100% о последнем преобразовании, может быть, мы могли бы сказать, что объект уже сконструирован как const? Мы могли бы использовать volatile вместо const.

+0

'void fun (const X x); удовольствие (5.0); «Я думаю об этом из вашего примера. – zpeng

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