/ / Трябва ли конструкторите да инициализират членните променливи в C ++? - c ++

Трябва ли конструкторите да инициализират членните променливи в C ++? - c ++

Научих, че конструкторите са свикналиинициализиране на променливите на член от клас в C ++. Във всички примери видях, че конструкторите инициализират всички променливи на член от класа, когато се обадят.

Какво се случва, ако напиша конструктор, който само инициализира някои или не променливи на член?

Отговори:

5 за отговор № 1

Това наистина зависи от това кои променливи на член имате. Ако предоставите конструктор и не инициализирате изрично променлива в списъка за инициализиране на членове, тогава ще бъде по подразбиране инициализирано, И това е за всяка променлива.

Сега инициализацията по подразбиране прави нещо друго в зависимост от това коя променлива имате. Ако имате вграден тип, например int или bool, тогава тя няма да бъде инициализирана до 0 или друга стойност, точно както ако сте имали:

int value; // it has an indeterminate value

Това важи и за масиви. Ако е друг клас, тогава ще бъде извикан конструкторът по подразбиране на този клас, както ако сте имали:

struct Foo { /*something*/ };
Foo value; // calls default constructor, i.e. initializes object

2 за отговор № 2

това е добре .. можете също така да инициализирате вашите членски променливи във вашите членски функции, а след това просто се обадете на функцията в конструктора. Важното е да не забравяте да инициализирате променливи, преди да ги използвате.

накратко .. добре е да не инициализирате променливите на член в конструктора, стига да ги инициализирате някъде в класа, преди да ги използвате.


1 за отговор № 3

Имате право да направите това. Не е добра практика, макар че ще имате серия от неинициализирани променливи, които могат да доведат до неочаквани резултати


1 за отговор № 4

Зависи от класа и програмата ви. Дали вашият клас и програма се нуждаят от всички тези променливи във всички случаи. ако вашият клас ги изисква, тогава няма да възникнат грешки или изключения, в противен случай програмата ви може да се срине или нещо подобно.