Cthulhu: Да какая там темная сторона? для простых конструкторов, состоящих только из списка инициализации - как раз то, что доктор прописал. Чтобы не сидеть и не напрягать мозги как назвать параметры непохоже на мемберов.
raider, навскидку могу назвать 2 потенциальные проблемы:
1. Рефакторинг. Например, было: A::A( B * ptr, C * another ) : ptr( ptr ), another( another ) {} Стало: A::A( B * ptr, C * another ) : ptr( 0 ), another( another ) { ptr = new B( another ); } Идея понятна?
2. Методы-мутаторы. Там всё равно придётся морщить моск и придумывать имена параметрам.
6 комментариев:
Только в initialization list. Внутри конструктора scope перекрывается, и для обращения к членам приходится использовать this.
С удовольствием давно пользуюсь этим удобным фактом. Более того, можно писать и так:
class foo
{
foo(int x, int y)
{
this->x = x;
this->y = y;
}
int x, y;
};
Можно-то оно конечно можно. Но только это стопроцентный путь на Тёмную сторону.
Cthulhu: Да какая там темная сторона?
для простых конструкторов, состоящих только из списка инициализации - как раз то, что доктор прописал. Чтобы не сидеть и не напрягать мозги как назвать параметры непохоже на мемберов.
Michael: ну да, в списке инициализации, конечно.
raider, навскидку могу назвать 2 потенциальные проблемы:
1. Рефакторинг.
Например, было:
A::A( B * ptr, C * another ) :
ptr( ptr ), another( another )
{}
Стало:
A::A( B * ptr, C * another ) :
ptr( 0 ), another( another )
{
ptr = new B( another );
}
Идея понятна?
2. Методы-мутаторы. Там всё равно придётся морщить моск и придумывать имена параметрам.
Отправить комментарий