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

Класс игральная карта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возвратить массив из функции http://www.cyberforum.ru/cpp-beginners/thread883125.html
как мне из функции input items возвратить мой массив?вот код protected: int ArrayLenght; int Amount; int *SortArray; public: /*Sorting(); ~Sorting();*/ void SizeOfArry(int b)
C++ Организовать заданную структуру данных: точка (x, y) плоскости, стек (добавление, удаление и чтение элемента) Организовать заданную структуру данных: точка (x, y) плоскости, стек. Определить структуру элемента и написать подпрограммы добавления, удаления и чтения элемента. Написать тестовую программу. http://www.cyberforum.ru/cpp-beginners/thread883115.html
Дан символьный файл. Найти самое длинное слово среди слов, вторая буква которых есть Е C++
Ребятки привет.возникла проблема к началу сесии.Помогите пожалуйста решить задачу. Дан символьный файл . Найти самое длинное слово среди слов, вторая буква которых есть Е; если слов с наибольшей...
Дан массив из N натуральных чисел. Определить количество степеней пятёрки C++
Помогите пожалуйста написать программу, вот условие-Дан массив из N натуральных чисел.Определить количество степеней пятёрки.Использовать функцию распознавания степеней пятёрки.
C++ Кусочно-линейная функция http://www.cyberforum.ru/cpp-beginners/thread883095.html
Разработайте программу для вычисления значений функции приведенной на графике, исходя из предложения, что при X<-2 и при X>5 поведение функции не изменяется. Образец:
C++ Обработка файлов. Сформировать новый файл, элементами которого являются числа Записать в файл N натуральных чисел: а1,а2,...,аn (числа получить с помощью датчика случайных чисел). Сформировать новый файл,элементами которого являются числа а1,а1*а2,а1*а2*а3,...,а1*а2*а3*...*аn... подробнее

Показать сообщение отдельно
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
29.05.2013, 22:37
Цитата Сообщение от Tulosba Посмотреть сообщение
Чем ещё может усложнить поддержку кода наличие параметров по умолчанию в конструкторе, мне не ясно.
Надеюсь, уважаемый lemegeton всё же снизойдет до подробностей.
Чуть-чуть.

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

Во-вторых, на взгляд будет довольно затруднительно определить, какой же конструктор вызывается.

В третьих. В бою, особенно рефакторинговом, часто бывает так, что объект приходится собирать из нескольких других. Бывают случаи, когда алгоритм создания объекта зависит лишь от количества параметров.
А у вас уже есть ваш конструктор с параметрами по-умолчанию.
... и общий привет. Попробуйте перегрузить конструктор с одним параметром того же типа. С учетом, что для С++ нет IDE с мало-мальски приличным рефакторингом, особенно если в ходу шаблоны.

Ну и начинаются архитектурные паттерны. Я, конечно, совершенно за фабричные методы и частенько их использую вместо конструкторов, но именно что вместо.

Пример:
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
#include <iostream>
 
class Currency {
 public:
  Currency(const char *) {}
  /* ... */
};
 
class Instrument {
 public:
  // инструмент состоит из двух валют
  Instrument(const Currency &a = Currency("USD"), const Currency &b = Currency("JPY"))
    : a(a), b(b) {
    std::cout << "Two!" << std::endl;
  }
  // мне нужно создавать инструмент из одной валюты, который работает
  // работает совершенно не так, как работает конструктор,
  // создающий инструмент из двух валют
  Instrument(const Currency &c) : a(getCurrencyPair(b)), b(c) {
    std::cout << "One!" << std::endl;
  }
  static const Currency getCurrencyPair(const Currency &currency) {
    /* ... */
    return Currency("smthng");
  }
 private:
  Currency a, b;
};
 
int main(int , char**) {
  Currency currency("#USD");
 
  // собственно вот
  Instrument instrument(currency);
 
  return 0;
}
В реальном коде, которому лет десять, все гораздо, гораздо сложнее.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.