Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
63 / 63 / 39
Регистрация: 18.11.2016
Сообщений: 562
1

Какой вариант конструктора использовать правильней?

05.03.2017, 19:29. Показов 459. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Два примера кода, какой из них использовать более корректно и профессионально?
1)
C++
1
2
3
4
5
6
7
8
9
    card(){
    }
    card (deck_1 value_1, deck_2 value_2){
        soilt_1 = value_1;
        soilt_2 = value_2;
    }
 
    ~card(){
    }
2)
C++
1
card (deck_1 value_1, deck_value2) : soilt_1(value_1), soilt_2(value_2){}
Весь код целиком:

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#include <iostream>
#include <cstdlib>
#include <Windows.h>
#include <iomanip>
 
 
enum deck_1 {val_a, val_b, val_c, val_d};
enum deck_2 {jack, queen, king, ace};
 
class card{
    deck_1 soilt_1;
    deck_2 soilt_2;
public:
 
    card(){
    }
    card (deck_1 value_1, deck_2 value_2){
        soilt_1 = value_1;
        soilt_2 = value_2;
    }
 
    ~card(){
    }
 
    void display ();
    bool compare (card);
 
};
 
 
 void card::display (){
 
     switch (soilt_2){
     case jack: std::cout << "Валет "; break;
     case queen: std::cout << "Королева "; break;
     case king: std::cout << "Король "; break;
     case ace: std::cout << "Туз "; break;
 
     }
 
     switch (soilt_1){
     case val_a: std::cout << "червь"; break;
     case val_b: std::cout << "бубен"; break;
     case val_c: std::cout << "треф"; break;
     case val_d: std::cout << "пик"; break;
 
     }
 
 }
 
 bool card::compare (card chose){
     return (chose.soilt_1 == soilt_1 && chose.soilt_2 == soilt_2) ? true : false;
 }
 
 
    int main(){
        SetConsoleCP (1251);
        SetConsoleOutputCP (1251);
 
        short position;
 
        card card_1 (val_d, king);
        card card_2 (val_c, queen);
        card card_3 (val_a, ace);
 
        std::cout << "1) "; card_1.display(); std::cout << std::endl;
        std::cout << "2) "; card_2.display(); std::cout << std::endl;
        std::cout << "3) "; card_3.display(); std::cout << std::endl;
 
        card temp;
        card priz;
        card chos;
 
        priz = card_3; // Эту карту нужно будет найти!
 
        std::cout << "Меняем карту 1 и 2." << std::endl;
        
        temp = card_2;                  // С дополнительным временным объектом меняем местами карты.
            card_2 = card_1;            //
                card_1 = temp;          //
 
        std::cout << "Меняем карту 2 и 3." << std::endl;
 
        temp = card_2;
            card_2 = card_3;
                card_3 = temp;
 
        std::cout << "Меняем карту 1 и 3." << std::endl;
 
            temp = card_1;
                card_1 = card_3;
                    card_3 = temp;
 
        std::cout << "Вам нужно найти карту: "; priz.display(); std::cout << std::endl;
 
        std::cout << "Введите номер карты: "; std::cin >> position;
 
 
        switch(position){
        case 1: chos = card_1; break;       // Присваемваем объекту chos
        case 2: chos = card_2; break;       //  объект с выбранной картой.
        case 3: chos = card_3; break;       //
        }
 
    
        if (chos.compare(priz))             // Передаем в логическую функцию объекта chos, объект priz
            std::cout << "Вы выйграли!" << std::endl;
        else
            std::cout << "Вы проиграли!" << std::endl;
 
        system ("pause");
        return 0;
    };
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.03.2017, 19:29
Ответы с готовыми решениями:

В чём отличия конструктора копирования и конструктора перемещения? Где и как их нужно использовать?
Помогите разобраться в копирующем и перемещающем конструкторах. В чём их существенное отличие и...

Drawingvisual или Usercontrol: какой вариант будет реализовать правильней с точки зрения производительности
передомной стоит задача написать программу.чтобы было можно рисовать некоторые uml...

Какой вариант кода правильнее и эффективнее использовать?
Первый или второй вариант, и вообще есть ли принципиальная разница, между ними? List&lt;string&gt;...

Три конструктора с разным количеством аргументов, какой использовать?
В 1-ом классе 3 конструктора, которые имеют разное кол-во аргументов(3 арг, 6 и 11). Теперь во...

2
284 / 232 / 114
Регистрация: 07.09.2016
Сообщений: 584
05.03.2017, 19:34 2
инициализация мемберов в списке инициализации - более кошерна. т.е. второй вариант.
если бы ваши мемберы были константами - то только второй вариант и компилировался бы.
если бы ваши мемберы были более сложными объектами (например строками), то второй вариант был бы эффективнее.
1
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
05.03.2017, 19:55 3
В основном используют 2
1
05.03.2017, 19:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.03.2017, 19:55
Помогаю со студенческими работами здесь

Какой лучше использовать вариант для соединения с веб-приложением
Привет, форум! Вообще, просто вопрос, нежели потребность помощи в коде. Значит, имеется у...

Какой вариант выбрать ?
Avast free antivirus + Comodo Firewall или сразу установить Comodo Internet Security?

Какой вариант предпочтительней?
Есть данные на одном листе EXCEL Из этих данных может составлятся товарная накладная,...

Какой вариант вернее
INSERT INTO какой вариант вернее Procedure или cmd.CommandText=&quot;INSERT INTO ............

Какой вариант лучше?
Прохожу собеседования и каждый раз когда не озвучивают на каком стеке выполнить задание, возникает...

Какой вариант лучше?
Есть сайт который нужно вытащить в топ по вч. Все внетренние изменения сделанны, а вот про внешние...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru