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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 21, средняя оценка - 4.67
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
#1

Конструктор по умолчанию и ссылочная переменная - C++

06.06.2011, 20:14. Просмотров 2961. Ответов 20
Метки нет (Все метки)

есть у меня, скажем
C++
1
2
3
4
5
6
7
8
MyCLass
{
private:
     MyType &l;
public:
     MyClass ();
     MyClass ( MyType &l );
};
с обычным конструктором все впорядке:
C++
1
MyClass::MyClass ( MyType &_l ):l ( _l ) {};
возможна ли реализация такого конструктора по умолчанию?

ЗЫ без списка инициализации:
Bash
1
2
In constructor ‘MyClass::MyClass()’:
uninitialized reference member ‘MyClass::l’
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 20:14     Конструктор по умолчанию и ссылочная переменная
Посмотрите здесь:

Конструктор по умолчанию - C++
Здраститя. #include <iostream> using namespace std; class random { public: random(int b){a=b;} ~random(){} int...

Конструктор по умолчанию - C++
Всем привет! Если в классе вообще нет конструктора, чем будут инициализироваться члены класса? И в чем отличие объект() и объект...

Конструктор по умолчанию - C++
У меня получается создавать конструктор по умолчанию если в хедере эти значения указаны: class Unit { protected: string name; ...

Конструктор с атрибутом по умолчанию - C++
Есть пример из книги по Qt: class MyClass : public QObject { Q_OBJECT Q_PROPERTY(bool readOnly READ isReadOnly WRITE...

Конструктор копий по умолчанию. - C++
Почему, когда в vc++ vdfsadsad Добавлено через 46 секунд Почему если идёшь по коду с заходом в функцию не отображается вызов...

Заменить конструкторы на конструктор по умолчанию - C++
Подскажите,пожалуйста, как изменить код программы, чтобы вместо конструктуров был конструктор по умолчанию,а программа работала по...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
06.06.2011, 20:26     Конструктор по умолчанию и ссылочная переменная #2
а чем ты в конструкторе по умолчанию хочешь инициализировать l? this не получится воспользоваться, потому что объект ещё не создан
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 21:31  [ТС]     Конструктор по умолчанию и ссылочная переменная #3
Цитата Сообщение от pito211 Посмотреть сообщение
а чем ты в конструкторе по умолчанию хочешь инициализировать l? this не получится воспользоваться, потому что объект ещё не создан
ну неважно чем, вопрос в том как описать конструктор по умолчанию, в котором l либо не инициализируется вообще, либо инициализируется какой-либо константой (как, например указать - NULL ), жаелатьно, конечно, чтобы он оставался не инициализируемым, но на это компилятор почемуто ругается...
denix
63 / 63 / 2
Регистрация: 11.01.2009
Сообщений: 130
06.06.2011, 21:55     Конструктор по умолчанию и ссылочная переменная #4
Добавлено через 9 минут
Цитата Сообщение от pito211 Посмотреть сообщение
this не получится воспользоваться, потому что объект ещё не создан
что за бред
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 22:05     Конструктор по умолчанию и ссылочная переменная #5
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
ну неважно чем, вопрос в том как описать конструктор по умолчанию, в котором l либо не инициализируется вообще, либо инициализируется какой-либо константой (как, например указать - NULL ), жаелатьно, конечно, чтобы он оставался не инициализируемым, но на это компилятор почемуто ругается...
Инициализация ссылки - ОБЯЗАТЕЛЬНА! Поэтому законный вопрос: чем будешь инициализировать?
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 22:09  [ТС]     Конструктор по умолчанию и ссылочная переменная #6
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Инициализация ссылки - ОБЯЗАТЕЛЬНА! Поэтому законный вопрос: чем будешь инициализировать?
Благодарю) Судя по всему - ничем. И в таком случае, как я понял в классе с ссылочной переменной конструктора по умолчанию быть не может?
denix
63 / 63 / 2
Регистрация: 11.01.2009
Сообщений: 130
06.06.2011, 22:32     Конструктор по умолчанию и ссылочная переменная #7
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
в классе с ссылочной переменной конструктора по умолчанию быть не может?
может
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 22:50     Конструктор по умолчанию и ссылочная переменная #8
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
И в таком случае, как я понял в классе с ссылочной переменной конструктора по умолчанию быть не может?
Может. Например, конструктор может вызывать некую функцию, которая возвращает ссылку.
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 22:57  [ТС]     Конструктор по умолчанию и ссылочная переменная #9
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Может. Например, конструктор может вызывать некую функцию, которая возвращает ссылку.
хм... из списка инициализации?
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 22:59     Конструктор по умолчанию и ссылочная переменная #10
Да. Там в скобочках можно писать выражение, приводимое к типу поля. Более того, можно через запятую писать несколько выражений...
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 23:06  [ТС]     Конструктор по умолчанию и ссылочная переменная #11
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Да. Там в скобочках можно писать выражение, приводимое к типу поля. Более того, можно через запятую писать несколько выражений...
ну это понятно...
тогда можно ведь реализовать неопределенную инициализацую: так чтобы функция возвращала ссылку на переменную, которая создается в теле функции. хм.. надо попробовать
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 23:09     Конструктор по умолчанию и ссылочная переменная #12
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
ну это понятно...
тогда можно ведь реализовать неопределенную инициализацую: так чтобы функция возвращала ссылку на переменную, которая создается в теле функции. хм.. надо попробовать
А вот этого делать НЕ НУЖНО! Локальная переменная помрет, и куда тогда будет показывать ваша ссылка? Более того, вроде компилер такой выверт отслеживает и пишет "фигасе вам"... Но проверьте на всякий случай...
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 23:22  [ТС]     Конструктор по умолчанию и ссылочная переменная #13
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
А вот этого делать НЕ НУЖНО! Локальная переменная помрет, и куда тогда будет показывать ваша ссылка?
вот это мне И БЫЛО НУЖНО я знаю, что локальная переменная помирают) по сути такой такой выверт напоминает
Assembler
1
A dw ?
в ассемблере. У меня конструктор по умолчанию все равно приватный и нужен только для одной статической функции, которая сама присваивает этой ссылке нужное значение. Правда тут вылетает варнинг про возврат локальной переменной. И назревает стилистический вопрос: что лучше? создать для такой цели обычный конструкор с одним фиктивным параметром или оставить красивенький конструктор по умолчанию и вылетающий варнинг?
ValeryLaptev
Эксперт С++
1039 / 818 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
06.06.2011, 23:27     Конструктор по умолчанию и ссылочная переменная #14
Цитата Сообщение от -MefistofeL- Посмотреть сообщение
вот это мне И БЫЛО НУЖНО я знаю, что локальная переменная помирают) по сути такой такой выверт напоминает
Assembler
1
A dw ?
в ассемблере. У меня конструктор по умолчанию все равно приватный и нужен только для одной статической функции, которая сама присваивает этой ссылке нужное значение. Правда тут вылетает варнинг про возврат локальной переменной. И назревает стилистический вопрос: что лучше? создать для такой цели обычный конструкор с одним фиктивным параметром или оставить красивенький конструктор по умолчанию и вылетающий варнинг?
Таким образом, ваша статическая функция играет роль конструктора. Singlton? что ли реализуете? Обычно в этом паттерне пишут статическую функцию для создания единственного объекта. Насколько помню, реализацию конструктора можно просто не писать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2011, 23:36     Конструктор по умолчанию и ссылочная переменная
Еще ссылки по теме:

Конструктор по умолчанию + объявление функции - C++
Сам класс: class Man { public: Man(int lName=30); ~Man(); bool CompareName(const char*) const; int GetBirthYear() const {...

Не правильно работает конструктор по умолчанию - C++
Вот один из хедеров моей программы. Проблем две, первая: в поля city и street не записывается первая буква, например ввожу "Ростов", а...

Когда создается конструктор по умолчанию? - C++
Здравствуйте, товарищи! Прочитал тут книгу "Ассемблер и дизасеммблирование" Пирогова и открыл для себя такую вещь, что конструктор...

Конструктор по-умолчанию и его тело - C++
Привет, у меня появился небольшой вопрос по поводу классов. Есть конструктор по-умолчанию: class ilist { public: //...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
-MefistofeL-
21 / 19 / 1
Регистрация: 11.02.2009
Сообщений: 383
06.06.2011, 23:36  [ТС]     Конструктор по умолчанию и ссылочная переменная #15
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Таким образом, ваша статическая функция играет роль конструктора. Singlton? что ли реализуете? Обычно в этом паттерне пишут статическую функцию для создания единственного объекта. Насколько помню, реализацию конструктора можно просто не писать.
мм не совсем. Просто статическая функция выполняет некоторые действия, идентичным приватным методам класса. А если точнее, то это просто своеобразная ( наверняка далеко не лучшая ) реализация внутренней программной командной строки
Yandex
Объявления
06.06.2011, 23:36     Конструктор по умолчанию и ссылочная переменная
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru