1 | |
Могут ли быть указаны квалификаторы типа в качестве возвращаемого значения функции/метода?01.08.2015, 19:59. Показов 2153. Ответов 16
Метки нет (Все метки)
Могут ли быть указаны квалификаторы типа в качестве возвращаемого значения функции/метода?
Вернее сказать, в дополнение к типу возвращаемого значения
0
|
01.08.2015, 19:59 | |
Ответы с готовыми решениями:
16
Использование типа void в качестве возвращаемого значения функцией main Несовместимость по доступности типа возвращаемого значения и метода Почему ковариантный тип может быть только типом возвращаемого значения метода? Почему тип входящего параметра функции может отличаться от типа возвращаемого значения? |
01.08.2015, 20:10 [ТС] | 3 | |||||
castaway, имеется в виду, по аналогии, как в методе setx:
0
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
||||||
01.08.2015, 20:17 | 5 | |||||
castaway, зачем так категорично?
0
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
01.08.2015, 20:22 | 7 |
Ferrari F1, можно, а зачем?
Добавлено через 30 секунд castaway, да ладно тебе, просто слишком уж категорично: "нет"
0
|
02.08.2015, 16:57 | 8 |
Хз, что имел в виду ТС, но в твоём примере немного не то. У тебя квалификатор находит внутри типа (т.е. указатель на const). Я воспринимаю вопрос ТС'а как возврат значения типа "const int". В этом случае в программе написать можно, но по смыслу квалификатор будет игнорироваться. Так же как и в описании параметра в декларации (не определении) функции
C const int foo (void); /* const игнорируется */ void bar (const int); /* const игнорируется */
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,269
|
||||||
02.08.2015, 17:19 | 9 | |||||
Игнорироваться он будет при разрешении перегрузки, если указан в параметре.
Но в С++ вполне можно написать код, который по смыслу будет зависеть от этого const. Вот например с возвращаемым значением.
1
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,269
|
|||||||||||
02.08.2015, 18:08 | 11 | ||||||||||
Да нет, квалификатор как есть. Просто в С++ есть перегрузка по const. И разрешение вызова такой функции, зависит от константности объекта. Если говорить строго, то нижеследующий код не совсем тоже самое, но в рассматриваемом вопросе он точно передает смысл предыдущего примера:
Добавлено через 3 минуты На всякий случай поясню, я имел в в виду, что такие функции при перегрузке будут неотличимы:
0
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
02.08.2015, 18:09 | 12 | |||||
возвращается самый что ни на есть настоящий константный pvalue
http://ideone.com/zcTmVV
0
|
02.08.2015, 18:32 | 13 |
Тут-то как раз понятно. Указатель и константный указатель - это разные типы. В первом твоём примере методы foo различались наличием у одного из них const на конце. Я знаю, что эта конструкция означает, но не знаю, как правильно называется. Но это, как мне кажется, НЕ есть "квалификатор типа"
А вот здесь уже квалификатор типа. И он в этом месте игнорируется с точки зрения описания прототипа Опять-таки я не знаю, как это правильно называется. Это "квалификатор типа" или "квалификатор значения" (или как оно называется)?
0
|
18829 / 9832 / 2403
Регистрация: 30.01.2014
Сообщений: 17,269
|
|
02.08.2015, 18:39 | 14 |
Наличие этого "const на конце" как раз делает неявный this (во втором примере self) указателем на константу или не на константу. Так что если понятен второй пример, то и первый теперь тоже должен проясниться.
1
|
8739 / 4317 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||
02.08.2015, 19:10 | 15 | |||||
квалификатор типа.
запись:
который должен быть проинициализирован значением локального объекта s.
1
|
117 / 121 / 42
Регистрация: 25.08.2012
Сообщений: 1,294
|
|
02.08.2015, 20:07 | 16 |
Evg, а вот поэтому я и написал "Зачем?" в сообщении выше твоего
Добавлено через 5 минут Хотя смысл некоторый есть
0
|
02.08.2015, 23:42 | 17 |
0
|
02.08.2015, 23:42 | |
02.08.2015, 23:42 | |
Помогаю со студенческими работами здесь
17
Модификатор const в качестве возвращаемого значения непонятки с QVector в качестве возвращаемого значения Использование int или void в качестве возвращаемого типа для main() Пользовательский тип данных в качестве возвращаемого значения свойством Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |