crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Конструкто копирования, в каких случаях должен вызываться?
kwisp
  опции профиля:
сообщение 14.6.2010, 14:20
Сообщение #1


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


# ifndef _PARENT_H_
# define _PARENT_H_


class Parent
{      

protected:
int m_id;

public:
        Parent():m_id(0)
        {
                std::cout<<__PRETTY_FUNCTION__<<"\n";
        }
        Parent(const int & id):m_id(id)
        {
                std::cout<<__PRETTY_FUNCTION__<<"\n";
        }
        Parent(const Parent& parent):m_id(parent.m_id)
        {
                std::cout<<__PRETTY_FUNCTION__<<"\n";
        }
        void setId(const int& id) {m_id = id;}
        Parent& operator=(const Parent& parent)
        {
                this->m_id = parent.m_id;
                std::cout<<__PRETTY_FUNCTION__<<"\n";
                return *this;
        }
};

# endif // _PARENT_H_

# include <iostream>
# include "parent.h"

Parent setParent(Parent parent)
{
        return parent;
}

Parent getParent(const int& i)
{
        Parent p(i);
        return /*Parent(i)*/p;
}

int main()
{
        //Parent parent(10);
        //setParent(parent);
        //parent = getParent(11);
        //return 0;
}

внимание вопросы:
1. сколько раз при вызове setParent(parent) вызовется конструктор копирования?
2. сколько раз при вызове getParent(11) вызовется конструтор копирования?

П.С.
если прилагаете к ответу консольный вывод программы указывайте пожалуйста версию компилятора и ОС.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 15.6.2010, 13:32
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(kwisp @ 15.6.2010, 14:19) *
проверял?
нет

видимо во втором случае, локальный объект не уничтожается, ради экономии времени и памяти, а просто возвращается ссылка на него.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.11.2024, 19:09