Вам не нужно делать ничего особенного, просто string bin[100];
прекрасно. Конструктор по умолчанию для std::string
будет вызываться для каждого элемента массива.
Если массив является членом какого-либо класса, инициализировать его в списке инициализации членов:
struct SomeClass
{
std::string bin[100];
SomeClass() : bin() // You can initialize arrays with() in the mem-init list
{
}
};
* Технически, конструктор по умолчанию будет называться даже если вы не добавляете bin()
к мем- init, но это хорошая практика (поскольку встроенные типы останутся неинициализированными).
В C++ члены класса инициализируются через списки инициализации. Например, в следующих примерах, есть разница в коде:
// First example
struct MyClass
{
int i;
SomeClass() : i(1)
{
}
};
// Second example
struct MyClass
{
int i;
SomeClass()
{
i = 1;
}
};
В первом примере, i
является инициализируется в 1
в списке инициализации. Во втором примере 1
- - - i
. Вы могли бы думать о коде выше, как, выполнив следующие действия:
int i = 1; // First example
int i; // Second example
i = 1;
Для встроенного типа, как int
не существует большая разница между этими двумя, однако выше разница может быть очень важно в некоторых ситуациях, например а когда член объявляется const
:
struct SomeClass
{
const int i;
SomeClass()
{
i = 1; // Error!!
}
};
в приведенном выше примере, сопзИте член должен быть инициализирован в списке инициализации.
Что бы я добавил в свой конструктор классов? Поскольку я объявил 'string bin [100];' в качестве моей функции-члена я бы просто оставил инициализацию пустой в конструкторе класса? – user2419691
Надеюсь, что 'bin' является переменной-членом, а не функцией. Инициализируйте его в списке инициализации члена ctor, например 'MyClass :: MyClass(): bin() {// body of ctor}' –
oops, я хотел сказать переменную-член. И я не совсем понимаю, что вы говорите об инициализации в списке ctor. Как мне это сделать? Я редактировал свое первое сообщение, чтобы указать, как выглядит мой конструктор. – user2419691