Форум программистов, компьютерный форум, киберфорум
Наши страницы

Указание типа переменной и ссылки при объявлении\инициализации - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ механизм наследования http://www.cyberforum.ru/cpp-beginners/thread1775407.html
Есть такой код: #include <iostream> using namespace std; class base { protected: int i, j; // private to base, but accessible to derived public: void set(int a, int b) { i = a; j = b; }
C++ Обратная польская запись Пожалуйста помогите, всю голову себе сломал. Задание: "Обеспечить перевод инфиксного выражения в ОПЗ и вычислить его результат. Входные данные в файле. Использовать алгоритм сортировочной станции... http://www.cyberforum.ru/cpp-beginners/thread1775405.html
Разработка БД "Расписание для школы" C++
Доброго времени суток. Имеется вопрос по созданию базы данных на языке С++. Задача - разработать базу данных "школьное расписание". Имеются следующие исходные данные: 1) наименования предметов....
Список файлов и папок на глубину 2 C++
Как организовать получение списка папок и файлов на глубину 1. В итоге должен быть примерно такой список - Folder1 --File1 --File2 -Folder2 --File3 --File4 Сам поиск внутри одной папки...
C++ Загрузка моделей из Blender'а в OpenGL http://www.cyberforum.ru/cpp-beginners/thread1775353.html
Посоветуйте какие есть библиотеки для загрузки моделей из Blender'а в OpenGL .
C++ Сформировать предложение из слов, имеющих после второго символа только символы из заданной подстроки Условие: Дан массив слов и подстрока. Сформировать предложение из слов, имеющих в своем составе после второго символа только символы из заданной подстроки, предварительно удалив из таких слов первые... подробнее

Показать сообщение отдельно
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
04.07.2016, 11:33
Цитата Сообщение от kakadyi Посмотреть сообщение
Более того, тип объявляемой ссылки должен быть строго таким же, как и тип той переменной, на которую ссылаемся, то есть что-то типа такого не прокатит в принципе
Что-то типа такого не прокатит совершенно по другой причине. Временный объект, который получается при неявном преобразовании int->double можно привязывать только к ссылке на константу или rvalue-ссылке.
C++
1
2
3
4
5
6
int main()
{
   int x = 10;
   double const & y = x; //ok
   double && y1 = x; //ok
}
Кроме того, есть еще явные и неявные преобразования типов ссылок на классы в иерархии, где тип ссылки может отличаться от типа правостороннего выражения.
C++
1
2
3
4
5
6
7
8
class A {}
class B : public A {};
 
int main()
{
    B b;
    A & x = b;
}
Кроме того, есть еще возможность писать пользовательские операторы преобразования, которые тоже используют левосторонний тип для выполнения нужного преобразования.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
struct B
{
    operator int &()
    {
         return a;
    }
    int a;
};
 
int main()
{
    B b;
 
    int & a = b;
}
В тех же случаях, где тип правостороннего выражения точно определяет тип ссылки, вполне можно пользоваться ключевым словом auto из С++11.
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru