Russian Qt Forum

Программирование => С/C++ => Тема начата: blood_shadow от Апрель 07, 2011, 10:47



Название: Параметри конструктора или вызовы ф-ций
Отправлено: blood_shadow от Апрель 07, 2011, 10:47
Вообщем в объекте надо определить 8 полей, как лучше это сделать, инициализацией с помощью
конструктора с 8 параметрами или создание пустого объекта и вызов 8 ф-ций?
интересуют вопросы соотношения производительности и хорошего/плохого стиля


Название: Re: Параметри конструктора или вызовы ф-ций
Отправлено: Пантер от Апрель 07, 2011, 10:51
Оба варианта не очень. Данные можно определить в структуру?


Название: Re: Параметри конструктора или вызовы ф-ций
Отправлено: Igors от Апрель 07, 2011, 11:03
Вообщем в объекте надо определить 8 полей, как лучше это сделать, инициализацией с помощью
конструктора с 8 параметрами или создание пустого объекта и вызов 8 ф-ций?
интересуют вопросы соотношения производительности и хорошего/плохого стиля
Если поля "однородны", можно использовать указатель, напр

Код
C++ (Qt)
struct Matrix3x3 {
Matrix3x3( const float * src = 0 )
{
   if (!src) Identity();
   else Set(src);
 }
 
void Set( const float * src )
{
  m00 = src[0];
  ...
  m22 = src[8];
}
};
 
Если же полей много, но они не имеют между собой ничего общего, то лучше создать вспомогательную struct  (со всеми полями открытыми), спокойно ее заполнить и подать как 1 параметр конструктора

Код
C++ (Qt)
struct MyConstructInfo {
float mMagnify;
int mType;
...
};
 
// использование
MyConstructInfo info;
info.mMagnify = 1.0f;
...
 
MyClass * theObject = new MyClass(&info);
 


Название: Re: Параметри конструктора или вызовы ф-ций
Отправлено: Fess от Апрель 07, 2011, 11:08
в зависимости от задачи..
* можно сделать конструктор по умолчанию (без параметров) - обнуляет поля.
* конструктор с нужными полями
* get()/set() для каждого поля.
Объединять в структуру только если они имеют общую смысловую нагрузку


Название: Re: Параметри конструктора или вызовы ф-ций
Отправлено: blood_shadow от Апрель 07, 2011, 11:09
понял, спасибо всем, вариант со структурой подошел, будем знать :)


Название: Re: Параметри конструктора или вызовы ф-ций
Отправлено: Akon от Апрель 07, 2011, 13:33
ИМХО, вариант со структурой/классом нужно использовать если все поля связаны, т.е. считываются и устанавливаются как единое целое. Если поля не связанные, то конструктор устанавливает значения по-умолчанию, а дальше getter/setter по каждому полю.