Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Вопрос про конструктор класса по умолчанию - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Очень простой вопрос http://www.cyberforum.ru/cpp-beginners/thread374546.html
до смешного простой) как прервать выполнение ФУНКЦИИ в процессе работы программы? return 0; в этом случае не подходит т.к. завершает программу в целом, а мне нужно просто чтобы завершилась...
C++ Язык С На языке С :) напишите программу которая будет перемножать квадратную матрицу размером NxN на вектор размерностью N. Значение N выбрать таким образом чтоб максимально использовать возможную... http://www.cyberforum.ru/cpp-beginners/thread374543.html
C++ Длинная арифметика. Задача А + В
Прошу помочь решить эту задачку, желательно с закомментированными построчными объяснениями. Особенно про подключаемые файлы -инпут и аутпут. Также желательно предельно простое решение (без всяких...
Выяснить, сколько чисел входит в последовательность по одному разу C++
Условие задачи написано в шапке кода программы. Я написал эту программу, программа работает. Но есть одно ключевое но: преподаватель мне сказал, что то, работает или нет программа его волнует в...
C++ Вывести на экран линию из символов http://www.cyberforum.ru/cpp-beginners/thread374513.html
Нужно написать программу c помощью цикла While, вот условие: Написать программу, которая выводит на экран линию из символов. Число символов, какой использовать символ, и какая будет линия -...
C++ Помогите написать прогу в С++ Люди пожалуйста помогите написать в С++ программы для задач ,буду очень благодарен Задача1 Lin18. Найти решение системы уравнений вида A1·x + B1·y = C1, A2·x + B2·y = C2, заданной своими... подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
29.10.2011, 19:27
Цитата Сообщение от iluxa1810 Посмотреть сообщение
Сыроежка, Контруктор,как я понял из книги позволяет при объявлении переменной класса задать ей значения при ее объявлении,а если допустим я не хочу задавать ей значения при объявлении.По влияет ли в таком случае этот конструктор по умолчанию на работу программы?
Если я не объявлю конструктор сам,а потом попытаюсь присвоить переменной класса значение,то произойдет ошибка?
Конструктор по умолчанию, как правильно написано в приведенной вами ссылке, является любой конструктор, который можно вызвать без аргументов.

Это совершенно не означает, что конструктор по умолчанию не может иметь параметров. Но это означает, если у конструктора есть параметры, то, чтобы он был конструктором по умолчанию, все его параметры должны иметь аргументы по умолчанию.

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

Рассмотрим простой пример.

C++
1
2
3
4
5
6
7
8
9
10
11
struct A
{
   A( int i = 0 ) : x( i ) {}
   int x;
};
 
int main()
{
   A a1;
   A a2( 10 );
}
В этом пример мы явно определяем конструктор по умолчанию. Заметьте, что он имеет один параметр. Но тем не менее может быть вызван без аргументов. Тогда будет использоваться аргумент по умолчанию равным 0.

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

Ежели мы сами не определим конструктор для этого класса, то компилятор его определит за нас со следующим определением
C++
1
inline A::A() {}
Поэтому мы не можем его использовать при определении объекта a2 из нашего примера, так как создание объекта a2 требует передачи аргумента конструктора, а у объявленного по умолчанию конструктора вообще нет параметров. Поэтому компилятор должен сообщить об ошибке.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru