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

Инициализация ссылок - C++

Восстановить пароль Регистрация
 
thick_int
Заблокирован
19.12.2011, 21:24     Инициализация ссылок #1
Пусть T - это некоторый класс.
Хотелось бы знать, всегда ли такой код приемлем.

C++
1
2
3
4
5
6
7
8
extern int function1(T);
extern int function2(T&);
 
T classobj;
T& classref(classobj);
 
int b = function1(classobj);
int c = function2(classobj);
Или же для того, чтобы этот код был правильным в классе T должны быть реализованы определенные конструкторы.
Еще точнее:
1) Будет ли этот код верен, если в класе T отсуттвует конструктор по умолчанию?
2) Будет ли этот код верен, если в класе T отсуттвует конструктор копирования?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
19.12.2011, 21:31     Инициализация ссылок #2
thick_int, Что значит отсутствует смотря. Если он помещен в private и к нему нет доступа или же он объявлен как delete метод то передача по значению не пройдет.
Создание объекта T classobj - тоже не пройдет, если конструктор по умолчанию помещен в private или же с delete.
thick_int
Заблокирован
19.12.2011, 21:35  [ТС]     Инициализация ссылок #3
Нет ну разумеется пока все конструкторы считаютя публичными.
То есть в принципе такими, что если они есть то они таковы, что ими можно воспользоваться.
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,185
Завершенные тесты: 1
19.12.2011, 21:39     Инициализация ссылок #4
Конструктор по умолчанию, и конструктор копирования
(если они не реализованы) компилятор создаст сам.
Но он это делает очень тупо.
Конструктор по умолчанию вообще ничего не делает.
Копиконструктор тупо копирует все данные.
Если это подходит, то можно и не реализовывать.
thick_int
Заблокирован
19.12.2011, 21:43  [ТС]     Инициализация ссылок #5
To zss2
Ну, не совсем у Вас все правильно, скорее это примитивный подход.
Но вопрос был из другой оперы.
Yandex
Объявления
19.12.2011, 21:43     Инициализация ссылок
Ответ Создать тему
Опции темы

Текущее время: 13:41. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru