кастинг оператора - константа по сравнению с неконстантой

У меня есть этот пример кода:

class Number 
{ 
  int i;
  public:
    Number(int i1): i(i1) {}
    operator int() const {return i;}
};

Что последствия удаления const модификатор от оператора кастинга? Это влияет на автоматический кастинг, и почему?

14
задан Wolf 27 August 2014 в 12:04
поделиться

3 ответа

Если оператор преобразования не const, вы не можете преобразовывать const-объекты:

const Number n(5);
int x = n; // error: cannot call non-const conversion operator
28
ответ дан 1 December 2019 в 07:12
поделиться

Если у вас есть такая функция:

void f(const Number& n)
{
  int n1 = n;
}

Он начнет выдавать ошибку компиляции, если вы удалите const в операторе приведения.

5
ответ дан 1 December 2019 в 07:12
поделиться

Версия const может быть вызвана независимо от того, используется ли ] class Number константа или нет. Если оператор объявлен неконстантным, он может быть вызван только для неконстантных сущностей - при попытке неявно использовать его там, где он не может быть вызван, вы получите ошибку компиляции.

5
ответ дан 1 December 2019 в 07:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: