Модераторы: bsa

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Конструктор копий 
:(
    Опции темы
NetGod
  Дата 9.5.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



Прошу не посылать меня в гугль, там я уже был и подробного ничего не нашел, прошу ответить мне как его использовать(и когда вообще создается копия объекта) буду очень признателен)) smile 
PM MAIL ICQ   Вверх
archimed7592
Дата 9.5.2008, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Попробуй запустить эту программку, потом обсудим результаты, если останутся неясности.
Код

#include <ostream>
#include <iostream>

using std::cout;
using std::endl;

struct A
{
    A()
        : value()
    { cout << "A(), value = " << value << endl; }

    ~A()
    { cout << "~A(), value = " << value << endl; }

    A(int value)
        : value(value)
    { cout << "A(int), value = " << value << endl; }

    A(const A &rhs)
        : value(rhs.value)
    { cout << "A(const A &), value = " << value << endl; }

    A &operator =(const A &rhs)
    {
        this->value = rhs.value;
        cout << "operator =(const A &), value = " << value << endl;
    }
private:
    int value;
};

int main();
{
     A o1;
     A o2(5);
     A o3 = 6;
     A o4 = A(7);
     A o5 = A();
     A o6;
     o6 = o2;
     {
        A o7 = 8;
     }
     A o8 = 9;
}


Это сообщение отредактировал(а) archimed7592 - 9.5.2008, 15:10


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
NetGod
Дата 9.5.2008, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



Ошибка error C2447: missing function header (old-style formal list?)
Мну лучше попроще как нить объясните))
PM MAIL ICQ   Вверх
Graf_h
Дата 9.5.2008, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 482
Регистрация: 18.10.2007
Где: г. Ровно, Украина

Репутация: нет
Всего: 5



Код

#include "stdafx.h"
#include <iostream>
class A{
public:
    A(){
        std::cout<<"construktor A"<<std::endl;
    };
    A (const A &newA){
        std::cout<<"construktor copy A"<<std::endl;
    };
    ~A(){
        std::cout<<"destruktor A"<<std::endl;
    };

};

int main(int argc, char* argv[])
{
    
    A a;//здесь вызывается обычный конструктор
    A b(a);//здесь вызывается конструктор копии
    A c=a;//здесь вызывается конструктор копии

    return 0;
}



Результатом этой программы будет:

construktor A
construktor copy A
construktor copy A
destruktor A
destruktor A
destruktor A


Теперь понятно? smile


Это сообщение отредактировал(а) Graf_h - 9.5.2008, 15:46


--------------------
Иногда переменная - это просто переменная
PM MAIL ICQ   Вверх
NetGod
Дата 9.5.2008, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 22.3.2008
Где: город Мурманск, с трана Россия

Репутация: нет
Всего: нет



Graf_h, Ага, спасибо, теперь все понятно! smile 
PM MAIL ICQ   Вверх
archimed7592
Дата 9.5.2008, 20:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(NetGod @  9.5.2008,  15:58 Найти цитируемый пост)
Graf_h, Ага, спасибо, теперь все понятно! smile  

Ещё он вызывается при передаче объекта в ф-цию "по значению".


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Annihilator
Дата 9.5.2008, 23:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Еще при возврате функцией объекта


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
JackYF
Дата 10.5.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(Annihilator @  9.5.2008,  22:10 Найти цитируемый пост)
Еще при возврате функцией объекта 

... если компилятор не соптимизирует smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Annihilator
Дата 10.5.2008, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


bytegrinder
**


Профиль
Группа: Участник
Сообщений: 493
Регистрация: 21.11.2006
Где: Омск

Репутация: 1
Всего: 3



Цитата(JackYF @  10.5.2008,  15:22 Найти цитируемый пост)
... если компилятор не соптимизирует  

Правда? Интересно!  Первый раз такую оговорку встречаю...


--------------------
Если вы не можете сделать хоpошyю пpогpаммy, сделайте, чтобы она по кpайней меpе выглядела хоpошо
PM ICQ   Вверх
archimed7592
Дата 10.5.2008, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Annihilator, google, RVO OR NRVO.

Добавлено через 5 минут
Цитата(Annihilator @  10.5.2008,  18:05 Найти цитируемый пост)
оговорку

Насчёт оговорок, кстати, в, если я не ошибаюсь, clause 12 Стандарта есть целая куча оговорок насчёт temporaries и того, как они могут быть avoided компилятором.

Добавлено через 6 минут и 26 секунд
Вот: class.temporary


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 10.5.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(archimed7592 @  10.5.2008,  17:14 Найти цитируемый пост)
RVO OR NRVO.

Ты опять? smile



--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 10.5.2008, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(JackYF @  10.5.2008,  21:41 Найти цитируемый пост)
Ты опять?

Чего сразу я? smile


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
JackYF
Дата 10.5.2008, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(archimed7592 @  10.5.2008,  20:56 Найти цитируемый пост)
Чего сразу я?

Ну а кто у нас любит хитровы-аббревиатуры? smile Объяснил бы хоть smile


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
archimed7592
Дата 10.5.2008, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 6
Всего: 93



Цитата(JackYF @  10.5.2008,  23:01 Найти цитируемый пост)
Ну а кто у нас любит хитровы-аббревиатуры? smile Объяснил бы хоть smile 

Дык вопрос то далеко не новичковый. Если пытливому уму действительно интересно, то он сделает вышеуказанный запрос в гугль и сразу поймёт что это за аббревиатура и насколько она хитровы smile. К слову, сейчас посмотрел - если делать запрос из гугли.ру, то вторая же ссылка ведёт на статью Алёны - дык зачем пальцы напрягать и что-то ещё печатать? smile

Добавлено через 1 минуту и 42 секунды
Хотел как лучше, а получилось как всегда - печатать пришлось ещё больше smile.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
Ln78
Дата 11.5.2008, 13:52 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



archimed7592, информация про RVO OR NRVO, конечно, хорошо, но если бы ты дополнил свой пример динамическими данными и комментариями, что было бы, если бы использовался конструктор копирования по умолчанию, признательность вопрошающего, возможна, была бы большей  smile . (Сам я отчасти заленился отвечать, отчасти не решился, подумав, раз уж google не справился, мне и пытаться не стоит) 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0754 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.