Какова концепция конструктора по умолчанию? - PullRequest
0 голосов
/ 02 октября 2011

помогите мне получить пример конструктора по умолчанию с примером.я не знаю, когда использовать конструктор по умолчанию в программе, а когда нет.помогите мне разобраться с этой проблемой. объясните пример для меня.когда нужно его использовать?

#include<iostream>
using namespace std;

class abc
{
public:
    abc()
    {
        cout<<"hello";
    }
};

int main()
{
    abc a;
    system("pause");
    return 0;
}

так на самом деле, какой смысл использовать конструктор по умолчанию и когда его нужно использовать?

Ответы [ 4 ]

2 голосов
/ 02 октября 2011

Класс, соответствующий концепции DefaultConstrutible, допускает следующие выражения (параграф 17.6.3.1 N3242):

T u; // object is default initialized
T u{}: // object is value intialized
T(); T{}; // value initialized temporary

Так много для концепции.Параграф 12.1 / 5 фактически говорит нам, что такое конструктор по умолчанию

Конструктор по умолчанию для класса X - это конструктор класса X, который может быть вызван без аргумента.Если для класса X нет объявленного пользователем конструктора, конструктор без параметров неявно объявляется как дефолтный (8.4).Неявно объявленный конструктор по умолчанию является встроенным открытым членом своего класса....

С введением удаленных специальных функций-членов стандарт также определяет список случаев, когда неявный конструктор по умолчанию недоступен, и различие тривиальных и нетривиальных конструкторов по умолчанию.

1 голос
/ 02 октября 2011

Если вам не нужно ничего делать, так как ваш класс создан.Используйте конструктор по умолчанию, в любой ситуации вам придется использовать собственный конструктор, так как конструктор по умолчанию ничего не делает.Вам также не нужно писать конструктор «по умолчанию».

class abc {
};

int main() {
abc a;  //don't want to do anything on instatiation
system("pause");
return 0;
}

class abc {
private:
int a;
public:
abc(int x) { a = x };
}


int main() {
abc a(1); //setting x to 1 on instantiation
system("pause");
return 0;
}
1 голос
/ 02 октября 2011
  • Конструктор - это специальная функция, без типа возврата.Его имя должно быть именем класса \ структуры.У него нет действительного имени в качестве функции, как указывалось Kerrek-SB .
  • Конструктор по умолчанию - это тот, у которого нет параметров или все параметры имеют значение по умолчанию.
  • Функция конструктора вызывается только один раз - когда объект создается
  • Конструктор вызывается через выражение new или выражение инициализации.Его нельзя вызвать «вручную».
  • Полезно для инициализации полей объекта, обычно с помощью member initializer list.

Проверьте this.

0 голосов
/ 02 октября 2011

Конструктор по умолчанию является конструктором без аргументов и будет вызываться в следующих ситуациях:

  • Создание или обновление объекта класса без какого-либо конструктора, например:

    abc a;
    abc* aptr=new abc;
    
  • Объявление массива класса, например:

    abc a_array[10];
    
  • Если у вас есть унаследованный класс, который не вызывает один из конструкторов базового класса

  • Если в вашем классе есть функция из другого класса, и вы не вызываете определенный конструктор класса этой функции.
  • При использовании некоторых контейнеров стандартной библиотеки, таких как vector, например:

    vector <abc> abc_list;
    

В этих ситуациях у вас должен быть конструктор по умолчанию, в противном случае, если у вас нет конструктора, компилятор создаст неявный конструктор по умолчанию без операции, а если у вас есть несколько конструкторов, компилятор покажет вам ошибку компиляции. Если вы хотите сделать одно из перечисленных выше действий, используйте конструктор по умолчанию, чтобы убедиться, что каждый объект создается правильно.

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