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

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

Войти
Регистрация
Восстановить пароль
 
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
#1

Прокомментируйте пожалуста программу - C++

13.10.2013, 15:27. Просмотров 372. Ответов 10
Метки нет (Все метки)

Что то я туплю, как-то все до меня не доходит толком. Прокомментируйте пожалуста программу, вернее два конструктора. Это ведь имено два конструктора? Смысл и что они делают и как друг с другом уживаются?

Добавлено через 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
67
68
69
70
71
72
73
// Листинг 9.11.
 // Передача константных указателей на объекты
 
 #include <string> 
#include <iostream> // для объекта cout
using namespace std;
 
#include<iomanip>
//Этот файл содержит большую часть манипуляторов C++. Если вы не знаете, что такое манипулятор, не беспокойтесь. Просто подключите это файл вместе с iostream, хуже не станет.
#include<fstream> 
//Подключается при работе с файлами.
 
 
 class SimpleCat
 {
public:
 SimpleCat();
SimpleCat(SimpleCat&);
 ~SimpleCat();
int GetAge() const { return itsAge; }
void SetAge(int age) { itsAge = age; }
 
private:
int itsAge;
 };
 
 SimpleCat::SimpleCat()
 {
 cout << "Simple Cat Constructor...\n";
itsAge = 1;
 }
 
 SimpleCat::SimpleCat(SimpleCat&)
 {
cout << "Simple Cat Copy Constructor...\n";
 }
 
 SimpleCat::~SimpleCat()
 {
 cout << "Simple Cat Destructor...\n";
 }
 
 const SimpleCat * const FunctionTwo (const SimpleCat * const theCat);
 
 int main()
 {
 cout << "Making Р° cat...\n";
 SimpleCat Frisky;
 cout << "Frisky is " ;
 cout << Frisky.GetAge();
 cout << " years old\n";
 int age = 5;
Frisky.SetAge(age);
 cout << "Frisky is " ;
 cout << Frisky.GetAge();
 cout << " years old \n";
 cout << "Calling FunctionTwo...\n";
 FunctionTwo(&Frisky);
 cout << "Frisky is ";
 cout << Frisky.GetAge();
 cout << " years_ald\n";
 system("pause  ");return 0;
 }
 
 // functionTwo, passes a const pointer
 const SimpleCat * const FunctionTwo (const SimpleCat * const theCat)
 {
 cout << "Function Two, Returning...\n";
 cout << "Frisky is now " << theCat->GetAge();
 cout << " years old \n";
 // theCat->SotAge(8): const!
 return theCat;
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.10.2013, 15:27
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Прокомментируйте пожалуста программу (C++):

Прокомментируйте программу - C++
void displayMoneyOfFirm() {cout&lt;&lt;MoneyOfFirm&lt;&lt;endl;} }; void Worker::work(float period) { MoneyOfWorker+=2*period; ...

Прокомментируйте программу - C++
#include&quot;iostream&quot; #include&quot;string&quot; using namespace std; int main() {string s, s1, s2; cout&lt;&lt;&quot;Enter string&quot;&lt;&lt;endl; ...

Прокомментируйте программу - C++
#include &lt;iostream&gt; using namespace std; int main() { int n; cout&lt;&lt;&quot;n=&quot;; cin&gt;&gt;n; int a; for (int i=0; i&lt;n; ++i) {cout&lt;&lt;&quot;a=&quot;;...

Прокомментируйте программу - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int main() { int n; cout &lt;&lt; &quot;n = &quot;; cin...

Прокомментируйте программу - C++
Если с можете помагите с этим программой #include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; class Budilnik { private:...

Прокомментируйте программу на векторы - C++
#include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; #include &lt;cmath&gt; using namespace std; int main () { vector...

10
Yanush
159 / 156 / 46
Регистрация: 28.09.2013
Сообщений: 288
Завершенные тесты: 1
13.10.2013, 16:12 #2
Первый - конструктор по-умолчанию.
Второй это конструктор копирования. Что он делает и зачем нужен можете узнать в поисковых системах.
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
13.10.2013, 16:31  [ТС] #3
Уже ищу. Но мне было бы наверно много проще и приятнее, если бы кто-то своими словами, лучше на этом примере, или на другом.
0
Banddk
37 / 37 / 1
Регистрация: 08.12.2012
Сообщений: 157
Записей в блоге: 1
13.10.2013, 16:34 #4
конструктор копирование , примерно тоже самое, что и = для чисел. Присваивает одному элементу класса значения другого.
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
13.10.2013, 19:46  [ТС] #5
Нет, забыл. Что и зачем вобще то передается в конструктор? Я так понимаю, в нем нужно просто присвоить переменным членам класа конкретные значения. Зачем же в него что-то передавать?
SimpleCat(SimpleCat&); Тут ма вобще передаем в конструктор не переменную, а что мы передаем? Зачем нам такой конструктор может быть нужен?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.10.2013, 19:52 #6
Цитата Сообщение от Banddk Посмотреть сообщение
конструктор копирование , примерно тоже самое, что и = для чисел.
примерно оператор присваивания копирует в готовый объект, конструктор копирования создает новый.
Это основное отличие.

Добавлено через 1 минуту
Dimka-novitsek, копирующий конструктор должен принимать константную ссылку на объект.
C++
1
SimpleCat(const SimpleCat&);
Добавлено через 1 минуту
Цитата Сообщение от Dimka-novitsek Посмотреть сообщение
Тут ма вобще передаем в конструктор не переменную, а что мы передаем? Зачем нам такой конструктор может быть нужен?
Это сигнатура функции (объявление). Параметр указывать не обязательно. При определении функции напишете полностью:
C++
1
2
3
4
SimpleCat(const SimpleCat& otherCat)
{
    // копируем правильно из otherCat 
}
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
13.10.2013, 19:55  [ТС] #7
А что происходит в этой строке, const SimpleCat * const FunctionTwo (const SimpleCat * const theCat)
распишите пожалуста, тоже подробно.

Добавлено через 31 секунду
СПАСИБО!!!!!
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.10.2013, 19:58 #8
C++
1
const SimpleCat * const FunctionTwo (const SimpleCat * const theCat)
функция принимает константный указатель на константный объект типа SimpleCat и возвращает такой же тип.
1
Dimka-novitsek
14 / 14 / 0
Регистрация: 26.04.2012
Сообщений: 1,091
13.10.2013, 20:15  [ТС] #9
Спасибо!!!
0
Jupiter
Каратель
Эксперт С++
6556 / 3977 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
13.10.2013, 20:41 #10
Цитата Сообщение от Tulosba Посмотреть сообщение
копирующий конструктор должен принимать константную ссылку на объект
не факт, стандарт дозволяет любой rvalue + любые доп. параметры
2
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.10.2013, 20:59 #11
Цитата Сообщение от Jupiter Посмотреть сообщение
не факт, стандарт дозволяет любой rvalue + любые доп. параметры
Почти согласен:
12.8.2. A non-template constructor for class X is a copy constructor if its first parameter is of type X&, const X&, volatile X& or const volatile X&, and either there are no other parameters or else all other parameters have default arguments (8.3.6).
Т.е. доп. параметры должны иметь значения по умолчанию.

Добавлено через 1 минуту
Jupiter, насчет const, пару раз на форуме попадались челы с проблемами именно из-за отсутствия const в копирующем конструкторе. Поэтому лучше бы предупредить появление схожих тем.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2013, 20:59
Привет! Вот еще темы с ответами:

Прокомментируйте мне программу - C++
поясняю...преподаватель сказал нам рассказать как работает программу помогите мне пожалуйста... надо написать каждую строчку что она...

Прокомментируйте программу на массивы - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; int main() { int n; cout &lt;&lt; &quot;n = &quot;; cin...

Прокомментируйте программу побитового отрицания - C++
Привет друзья,помогите пож-та разобраться в программе,завтра надо её защитить,рассказать как она работает. Если кому не сложно распишите...

Прокомментируйте программу (программа внутри) - C++
Пожалуйста помогите прокомментить. Для чего нужны вектора ,хоть немного.... #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;fstream&gt;...


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

Или воспользуйтесь поиском по форуму:
11
Yandex
Объявления
13.10.2013, 20:59
Ответ Создать тему
Опции темы

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