C ++ Генерация стандартного конструктора - PullRequest
6 голосов
/ 26 июля 2011

Я часто пишу очень простые классы вместо структур в стиле Си.Обычно они выглядят так:

class A
{
public:
  type mA;
  type mB;
  ...
  A(type mA,type mB,...) : mA(mA),mB(mB),... {}
}

Это разумный способ делать вещи?Если да, мне было интересно, был ли там какой-либо сторонний плагин или какой-нибудь удобный ярлык для автоматического конструирования текста для конструктора (например, взять выделенные или существующие определения элементов, заменить точки с запятой на запятые, переместить все в одну строку...)?Спасибо

Ответы [ 3 ]

11 голосов
/ 26 июля 2011

Да, просто используйте простые агрегаты:

struct A
{
  type mA;
  type mB;
  ...
};

Использование:

A x = { mA, mB, ... };

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

1 голос
/ 26 июля 2011

РЕДАКТИРОВАТЬ: предыдущая версия была C99, а не C ++.теперь это c ++

Я думаю, вы можете использовать инициализацию {} вместо написания конструктора.или это в с ++ 0x?c99?я не уверен.но это выглядит так:

struct A myA = { 3,  5};
0 голосов
/ 26 июля 2011

Я бы сказал, что это разумный способ сделать это, хотя фанатики ОО могут прокомментировать отсутствие у вас инкапсуляции.Я знаю, что Visual Studio имеет встроенные фрагменты кода, которые выполняют половину работы, которую вы ищете, но это зависит от вашей IDE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...