Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Непонятка с конструктором копирования


Автор: OlegSK 2.12.2010, 14:34
В книге Шилдта, "Полный справочник C++" упоминается, что конструктор копирования может принимать несколько аргументов. К сожалению, Шилдт ограничился лишь упоминанием о такой возможности, не раскрыв данную тему. Хотелось бы узнать об этом по подробнее... Где можно прочитать подробности этой темы?

Автор: zoidberg 2.12.2010, 14:42
Цитата(OlegSK @ 2.12.2010,  14:34)
В книге Шилдта, "Полный справочник C++" упоминается, что конструктор копирования может принимать несколько аргументов. К сожалению, Шилдт ограничился лишь упоминанием о такой возможности, не раскрыв данную тему. Хотелось бы узнать об этом по подробнее... Где можно прочитать подробности этой темы?

Часто вижу тут ОБУЧАЮЩИХСЯ по книгам Шилда серии СПРАВОЧНИК. Для меня остается загадкой данная практика. Даже в аннотации автор предупреждает, что это справочник, а не учебник. Тащемта, у Шилда есть "C++ базовый курс", например.

Автор: Чoо 2.12.2010, 14:50
и еще самоучитель с++ есть у него smile. права рассчитана для владеющих языком си

Автор: bsa 2.12.2010, 16:18
OlegSK, вот http://forum.vingrad.ru/forum/index.php?show_type=forum&showtopic=269794&kw=faq-c++ есть тема про книги. Не поленись, почитай. Главное, обрати внимание на рекомендуемую последовательность чтения.

А по поводу конструктора копирования с дополнительными параметрами:
Код
class MyClass
{
   MyClass(const MyClass &x, int flags = 0);
};

Автор: OlegSK 2.12.2010, 17:51
zoidberg, до этой книги я читал книгу Джеса Либерти, "Освой самостоятельно C++ за 21 день", и не видел там описания конструктора копировщика с несколькими аргументами (и еще некоторых вещей). Собственно я и взялся за справочник чтобы заполнить пробелы в знаниях. Посмотрю указанные Вами книги; надеюсь, что найду там нужную информацию...

Автор: kemiisto 2.12.2010, 17:54
http://catb.org/jargon/html/B/bullschildt.html одним словом.

Автор: OlegSK 2.12.2010, 18:03
bsa, благодарю за список книг. Что касается конструктора копировщика, то осталось только разобраться: когда и какие флажки передаются в аргументе flags, и как их использовать...

Добавлено через 4 минуты и 35 секунд
kemiisto, я вас верно понял: вы считаете, что эту книгу читать не стоит?

Автор: bsa 2.12.2010, 18:08
Цитата(OlegSK @  2.12.2010,  19:03 Найти цитируемый пост)
Что касается конструктора копировщика, то осталось только разобраться: когда и какие флажки передаются в аргументе flags, и как их использовать... 

 smile 
Когда надо, какие надо, как хочешь, так и используй. Я для примера привел второй аргумент типа int и именем flags. Там может быть все что угодно. Более того, можно и 10 параметров сделать. Вот только не нужно это в большинстве случаев - я за свою 10-ти летнюю практику не припомню ни одного случая, чтобы я делал подобный конструктор.

Автор: OlegSK 2.12.2010, 18:40
bsa, я еще можно сказать не в теме... Как, например, передать значение для второго аргумента конструктора копирования в следующем коде:
Код

MyClass TestFunc()
{
       MyClass test;
       int flags;
       ...
       return test; // Здесь нужно чтобы конструктор копирования класса MyClass получил не только test, но еще и flags...
}

Автор: mes 2.12.2010, 19:16
Цитата(OlegSK @  2.12.2010,  17:40 Найти цитируемый пост)
   return test; // Здесь нужно чтобы конструктор копирования класса MyClass получил не только test, но еще и flags...
}


Код

return MyClass (test, flags);

хотя для конкретно вашего примера конструктор копий не нужно использовать..

и.. не конструктор копий может принимать дополнительный параметры, а конструктор имеющий дополнительные параметры по умолчанию считается конструктором копий.. 

Автор: OlegSK 2.12.2010, 19:27
mes, благодарю вас за пример кода! Тему можно закрывать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)