о каких ошибках я сообщу, если я неправильно перегрузлю операторы? - PullRequest
0 голосов
/ 04 марта 2010

Я знаю, что мы не можем перегрузить оператор с другим значением, мы не можем создавать новые операторы, и мы не можем перегрузить без определенного пользователем класса. Если я перегрузить операторов неправильно? какие ошибки будут сообщать? ошибки компилятора или ошибки во время выполнения?

Если я перегрузлю **, что произойдет?

Ответы [ 3 ]

2 голосов
/ 04 марта 2010

Вы можете перегружать только существующие операторы.В C ++ нет operator **.

Если вы попытаетесь, компилятор пожалуется.

Перегрузки оператора проверяются во время компиляции.Если он компилируется, это просто своего рода функция, поэтому возможные ошибки во время выполнения такие же, как и для любой другой функции.

1 голос
/ 04 марта 2010

Возможно, я неправильно понимаю ваш вопрос, но вы определенно можете перегружать операторов разными значениями. Рассмотрим целые числа против iostreams:

1 << 5;  // takes the value 1 and does a binary shift

cout << "moo";  // inserts the string "moo" into the cout stream

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

0 голосов
/ 05 марта 2010

Кроме того, имейте в виду, что если вы манипулируете объектами в куче (через новый оператор), неправильная перегрузка операторов может вызвать сбои или утечки памяти, а также просто не выполнять то, что вы планировали. Проблемы такого типа могут не вызывать ошибок времени выполнения или компиляции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...