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

Обьясните программу - C++

Восстановить пароль Регистрация
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
15.10.2013, 00:49     Обьясните программу #1
Обьясните пожалуста как и что делает эта программа и почему она это делает.
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
55
56
57
58
59
60
61
62
63
64
65
66
// Листинг 9.10.
 // Передача указателей на объекты
 
#include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 
 
 class SimpleCat
 {
public:
SimpleCat (); // конструктор
SimpleCat(SimpleCat&); // конструктор-копировщик
 ~SimpleCat(); // деструктор
 };
 
 SimpleCat::SimpleCat()
 {
cout << "Simple Cat Constructor...\n";
 }
 SimpleCat::SimpleCat(SimpleCat&)
 {
cout << "Simple Cat Copy Constructor...\n";
 }
 
 SimpleCat::~SimpleCat()
 {
cout << "Simple Cat Destructor...\n";
 }
 
 SimpleCat Function0ne (SimpleCat theCat);
 SimpleCat* FunctionTwo (SimpleCat *theCat);
 
 int main()
 {
cout << "main()SimpleCat Frisky;\n";
SimpleCat Frisky;     // Вызываем конструктор раз.
 
cout << "main()FunctionOne(Frisky);\n";
Function0ne(Frisky);// Функция FunctionOne, передача как значения. Конструктор копирования вызывается дважды!!!
//И деструктор дважды!!! И функция не распечатывает сообщения коут!!!!!
cout << "main()FunctionTwo(&Frisky);\n";
FunctionTwo(&Frisky); // Функция FunctionTwo, передача как ссылки. Не вызываются конструктор-деструктор!!!
//Печатается коут из функции!!!
system("pause  ");
return 0;
 }
 
// Функция FunctionOne, передача как значения
SimpleCat Function0ne(SimpleCat theCat)
 {
cout << "Function One. Roturning,,,"<<theCat<<"theCat\n";
return theCat;
 }
 
 // Функция FunctionTwo, передача как ссылки
 SimpleCat* FunctionTwo (SimpleCat *theCat)
 {
cout << "Function Two. Returning..."<<theCat;"\n";
return theCat;
 }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 00:49     Обьясните программу
Посмотрите здесь:

обьясните код C++
C++ Деревья(обьясните)
C++ Обьясните где ошибка , и как правильно писать программу!
C++ Обьясните.
обьясните решение C++
обьясните задание C++
C++ обьясните пожалуйста!
Обьясните проограмму C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Folko
 Аватар для Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 00:54     Обьясните программу #2
Dimka-novitsek, вопрос "почему" является странным... ее создали вы, она поэтому и выполняет. А тут видимо показан пример использования указателей в программах, их различия и тп. В общем как программа демонстрация
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6166 / 2895 / 282
Регистрация: 04.12.2011
Сообщений: 7,695
Записей в блоге: 3
15.10.2013, 02:03     Обьясните программу #3
Так можно попробовать:
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream> // для объекта cout
//#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
//Интересно, что этот файл можно не подключать, так как он и не используется)))
#include <string> 
#include<fstream> 
//Подключается при работе с файлами.
 using namespace std;
 
 class SimpleCat
 {
string cat_name;
public:
SimpleCat (string cat_name_= "Romuald"); // конструктор
SimpleCat(const SimpleCat&); // конструктор-копировщик
 ~SimpleCat(); // деструктор
 //определите оператор << 
friend ostream& operator << (ostream& os, SimpleCat cat){
cout<<"The cat "<<cat.cat_name<<" that once had cought a fat rat!"<<endl;
return os;
 }
 };
 
 SimpleCat::SimpleCat(string cat_name_)
 {
cat_name=cat_name_;
cout << "Simple Cat Constructor... "<<cat_name<<endl;
 }
 
 SimpleCat::SimpleCat(const SimpleCat& cat)
 {
     if(this != &cat){
cat_name=cat.cat_name;
cout << "Simple Cat Copy Constructor...\n";
     }
 }
 
 SimpleCat::~SimpleCat()
 {
cout << "Simple Cat Destructor...\n";
 }
 
 void Function0ne (SimpleCat theCat);
 void FunctionTwo (SimpleCat *theCat);
 enum The_Rat{fat, rat};
 int main()
 {
cout << "main()SimpleCat Frisky;\n";
SimpleCat Frisky;     // Вызываем конструктор раз.
 
cout << "main()FunctionOne(Frisky);\n";
Function0ne(Frisky);// Функция FunctionOne, передача как значения. Конструктор копирования вызывается дважды!!!
//И деструктор дважды!!! И функция не распечатывает сообщения коут!!!!!
cout << "main()FunctionTwo(&Frisky);\n";
FunctionTwo(&Frisky); // Функция FunctionTwo, передача как ссылки. Не вызываются конструктор-деструктор!!!
//Печатается коут из функции!!!
cout<<endl;
cout<<"---------------------------------"<<endl;
cout<<endl;
cout << "main()SimpleCat Frisk;\n";
SimpleCat Frisk("Frisky is a lazy cat");     // Вызываем конструктор раз.
Function0ne(Frisk);
FunctionTwo(&Frisk);
cout<<endl;
system("pause  ");
return rat;
 }
 
// Функция FunctionOne, передача как значения
void Function0ne(SimpleCat theCat)
 {
cout << "Function One. Roturning,,,"<<theCat;
 
 }
 
 // Функция FunctionTwo, передача как ссылки
void FunctionTwo (SimpleCat *theCat)
 {
cout << "Function Two. Returning..."<<*theCat;"\n";
 
 }
Yandex
Объявления
15.10.2013, 02:03     Обьясните программу
Ответ Создать тему
Опции темы

Текущее время: 05:34. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru