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

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

Войти
Регистрация
Восстановить пароль
 
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
#1

Неверно отображатся содержимое копии - C++

31.10.2013, 23:30. Просмотров 250. Ответов 6
Метки нет (Все метки)

Есть код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class Country{
public:
    double Area;
    char Name[25];
 
    Country();
    Country(Country &Country);
    Country(char Name[25], double Area);
    ~Country();
    void show();
};
Country::Country(){}
 
Country::Country(char Name[25], double Area){
    strcpy_s(Country::Name, Name);
    this->Area=Area;
}
 
Country::Country(Country &Country){}
 
Country::~Country(){}
 
void Country::show(void){
    cout<<"Название: "<<Name<<endl;
    cout<<"Площадь: "<<Area<<endl;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    setlocale(LC_ALL,"Russian");
 
    Country c;
    Country s("Ukraine",534.5);
    Country a(s);
 
    cout<<"Создание экземпляра класса без параметров с последующим заполнением"<<endl;
    cout<<"Введите название страны: ";
    cin>>c.Name;
    cout<<"Введите площадь страны: ";
    cin>>c.Area;
    cout<<endl<<"Информация о стране: "<<endl<<"Название: "<<c.Name<<endl<<"Площадь: "<<c.Area<<endl;
    c.~Country();
 
    cout<<endl<<"Создание экземпляра класса с вызовом конструктора с параметрами"<<endl;
    s.show();
    s.~Country();
 
    cout<<endl<<"Создание копии экземпляра класса"<<endl;
    a.show();
    a.~Country();
 
    system("pause");
    return 0;
}
При попытке копирования объекта получается вот такая хрень:
Миниатюры
Неверно отображатся содержимое копии  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2013, 23:30     Неверно отображатся содержимое копии
Посмотрите здесь:

Копии - C++
class a { ... public: a (a &amp;o); a &amp;operator = (a &amp;o); ... }; .... a o1,o2;

конструктор копии - C++
Мне кажется что здесь также должен вызывать конструктор копия при возврате объекта obj из функции Get()! Разве нет? #include &lt;iostream.h&gt;...

Конструктор копии - C++
Здравствуйте! Не могу никак правильно использовать конструктор копии, тоесть создать копию обьекта (массива):( Вот конструктор с...

конструктор копии - C++
Здравствуйте. Необходимо было написать небольшую программку, связанную с выполнением определенных операций над матрицами. Я решил сделать...

Конструктор копии - C++
Конструктор копии вызывается при: 1)явном создании копии 2)при передачи параметров в функцию (по значению) 3)при возвращении объекта...

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

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
31.10.2013, 23:30  [ТС]     Неверно отображатся содержимое копии #2
помогите найти ошибку
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,731
31.10.2013, 23:37     Неверно отображатся содержимое копии #3
Цитата Сообщение от Кротяка Посмотреть сообщение
помогите найти ошибку
вот она
Цитата Сообщение от Кротяка Посмотреть сообщение
Country::Country(Country &Country){}
конструктор копирования пустой
Цитата Сообщение от Кротяка Посмотреть сообщение
strcpy_s(Country::Name, Name);
куда копируешь строку?
нужно в экземпляр класса
C++
1
strcpy_s(this->Name, Name);
Добавлено через 1 минуту
Цитата Сообщение от Кротяка Посмотреть сообщение
c.~Country();
зачем явно вызывать деструкторы?
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
31.10.2013, 23:43  [ТС]     Неверно отображатся содержимое копии #4
ValeryS, спасибо. Можно поинтересоваться, как конкретно это должно выглядеть?
деструкторы вызываю чтобы сразу уничтожить объект и освободить память
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,731
31.10.2013, 23:52     Неверно отображатся содержимое копии #5
Цитата Сообщение от Кротяка Посмотреть сообщение
деструкторы вызываю чтобы сразу уничтожить объект и освободить память
не волнуйся не освободишь
у тебя нет динамического выделения а для статического эти фокусы не пройдут система/ компилятор сама решит когда удалять
в результате у тебя память занята а объекта уже нет
Цитата Сообщение от Кротяка Посмотреть сообщение
Можно поинтересоваться, как конкретно это должно выглядеть?
так же как делал конструктор с параметрами
C++
1
2
3
4
5
Country::Country(const Country &cnt)
{
strcpy_s(this->Name,cnt.Name);
this->Area=cnt.Area;
}
Кротяка
5 / 5 / 0
Регистрация: 20.12.2010
Сообщений: 378
31.10.2013, 23:57  [ТС]     Неверно отображатся содержимое копии #6
ValeryS, сделал вот так
C++
1
2
3
4
Country::Country(Country &Country){
    strcpy_s(this->Name, Country.Name);
    this->Area=Country.Area;
}
спасибо большое
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2013, 00:03     Неверно отображатся содержимое копии
Еще ссылки по теме:

Неверно считает - C++
множество всех чисел вида (2^(k)+3^(k)). вот код: #include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;iostream.h&gt; #include &lt;math.h&gt; ...

Компилируется неверно - C++
Пользователь вводит температуру. Ему показывают сообщение о состоянии организма. Например 39– труп. Вот, что я написала. Но какую-то...

Вызов конструктора копии - C++
Не вызывается конструктор копии из производного класса #include &lt;iostream&gt; using namespace std; class A { int x; public: ...

Конструктор копии в Классах - C++
Подскажите пожалуйста правильно ли я написала и вызвала конструктор копии и деструктор, а то мне выдает 2 ошибки. #include...


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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,731
01.11.2013, 00:03     Неверно отображатся содержимое копии #7
Цитата Сообщение от Кротяка Посмотреть сообщение
сделал вот так
Во первых для конструктора копии используй const, во избежании
во вторых имя аргумента,а равно и переменных, старайся делать чтобы не совпадало с именем класса и членами класса
потом сам запутаешься в этих Country и компилятор можешь запутать, перекрытие имен
можно добавлять в начало a(argument, аргумент) t(temp, временная)
aCountry например
Yandex
Объявления
01.11.2013, 00:03     Неверно отображатся содержимое копии
Ответ Создать тему
Опции темы

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