Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.06.2008, 17:38   #1
Djaconda
Пользователь
 
Аватар для Djaconda
 
Регистрация: 02.09.2007
Сообщений: 26
По умолчанию Конструктор копирования

есть код
Код:
#include <stdio.h>
#include <conio.h>

class A
{
  int b;
  public:
    A (int a) : b(a) {}
    A(A &a)
    {
      printf("A is coled");
    }
    void Show()
    {
      printf("\nb=%d",b);
    }
};

int main()
{
  clrscr();
  A a(10);
  A a1(a);
  a1.Show();
  getch();
  return 0;
}
:

в идеале резултат b должен равняться 10 а получаеться 12803.

а при вынесении обьявления объектов перед функцией main тоесть сделав их глобальными b=0; почему так обьясните плиз.
Djaconda вне форума
Старый 11.06.2008, 18:05   #2
filosof_x86
...
Форумчанин
 
Аватар для filosof_x86
 
Регистрация: 01.06.2008
Сообщений: 134
По умолчанию

А кто за тебя должен присваивать b в конструкторе копии? Кстати, лучше в конструкторе копии передавать константный объект для копирования:

Код:
A(const A &a)   
{  
  b = a.b;  
}
filosof_x86 вне форума
Старый 11.06.2008, 18:06   #3
still_alive
Great Code Monkey
Форумчанин
 
Аватар для still_alive
 
Регистрация: 09.08.2007
Сообщений: 533
По умолчанию

Цитата:
в идеале резултат b должен равняться 10 а получаеться 12803.
Так ты ничего не скопировал потому что. В конструкторе копирования нужно еще сделать b = a.b; или в списке инициализации b(a.b); А иначе у тебя в b мусор (а если глобальные, то 0).
still_alive вне форума
Старый 11.06.2008, 18:54   #4
Djaconda
Пользователь
 
Аватар для Djaconda
 
Регистрация: 02.09.2007
Сообщений: 26
По умолчанию

спасибо. это мне препод задавал каверзный вопрос.
Djaconda вне форума
Закрытая тема
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конструктор по умолчанию Rembo Общие вопросы C/C++ 9 30.07.2008 09:54
Класс и конструктор Andr Общие вопросы C/C++ 2 10.05.2008 18:21
Конструктор объектов Yoger Общие вопросы Delphi 10 20.04.2007 12:45
Конструктор запросов kaa БД в Delphi 12 20.12.2006 16:45