Форум программистов, компьютерный форум CyberForum.ru

Могут ли быть указаны квалификаторы типа в качестве возвращаемого значения функции/метода? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Могут ли теоретически существовать методы с неопределенным числом аргументов? http://www.cyberforum.ru/cpp-beginners/thread1508389.html
Разумно ли использовать va args в таких ситуациях?
C++ Массив строк и найти в нем максимальную по длине строку Ввести массив строк и найти в нем максимальную по длине строку. Не учитывать случай, когда таких строк несколько. http://www.cyberforum.ru/cpp-beginners/thread1508370.html
Работа с pdf файлом C++
Добрый день, подскажите, можно ли стандартными средствами открыт PDF файл, для последующей работы с ним? Или есть свободные библиотеки для этого?
Заполнение вектора в цикле C++
Попробовал так (для освоения материала) #include <vcl.h> #include <vector> #include <iostream> #include <algorithm> //sort #include <functional> //greater or compare typedef vector<int> Vec; //тип для вектора из int-ов Vec MyVector(1); // один из векторов
C++ Как заставить подфункцию выдать обработанный массив? http://www.cyberforum.ru/cpp-beginners/thread1508345.html
Имеется программа, суть которой - обработать массив с данными; основной рабочий кусок содержит две вложенных функции - procedure1 и procedure2: void procedure1 (параметры) { ... } void procedure2 (параметры) {
C++ В заданном слове удалить букву Дано слово. а) удалить из него третью букву. б) удалить из него 1-ую из букв о, если такая буква есть. подробнее

Показать сообщение отдельно
DrOffset
6460 / 3834 / 885
Регистрация: 30.01.2014
Сообщений: 6,629
02.08.2015, 18:08     Могут ли быть указаны квалификаторы типа в качестве возвращаемого значения функции/метода?
Цитата Сообщение от Evg Посмотреть сообщение
Такое ощущение, что в этом примере const уже не квалификатором является, а хз знает чем
Да нет, квалификатор как есть. Просто в С++ есть перегрузка по const. И разрешение вызова такой функции, зависит от константности объекта. Если говорить строго, то нижеследующий код не совсем тоже самое, но в рассматриваемом вопросе он точно передает смысл предыдущего примера:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
struct A
{
    A() {}
};
 
void foo(A const * self)
{
    std::cout << "const foo\n";
}
 
void foo(A * self)
{
    std::cout << "nonconst foo\n";
}
 
int main()
{
    A a1;
    foo(&a1);
    
    const A a2;
    foo(&a2);
}
http://rextester.com/KLXI42518

Добавлено через 3 минуты
Цитата Сообщение от DrOffset Посмотреть сообщение
Игнорироваться он будет при разрешении перегрузки, если указан в параметре.
На всякий случай поясню, я имел в в виду, что такие функции при перегрузке будут неотличимы:
C++
1
2
void foo(const A a);
void foo(A a); // compiler error: redefinition of 'foo'
 
Текущее время: 08:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru