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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Значение по умолчанию - C++

20.08.2013, 18:30. Просмотров 680. Ответов 8
Метки нет (Все метки)

В C++ можно устанавливать встроенным типам данных значения по умолчанию вот таким способом:
C++
1
int i = int();
Здесь в переменной i будет записано 0

А если это использовать для пользовательских типов, то как так получается, что все переменные-члены устанавливаются в 0?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
struct Point
{
    int x, y;
 
    friend std::ostream &operator<<(std::ostream &out, const Point &point);
};
 
std::ostream &operator<<(std::ostream &out, const Point &point)
{
    out << "[" << point.x << ", " << point.y << "]";
    return out;
}
 
 
int main()
{
    Point       point = Point();
    std::cout << point;         // [0, 0]
 
    system("pause");
    return 0;
}
Конструкторов никаких нет
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 18:30
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Значение по умолчанию (C++):

Значение вектора по-умолчанию - C++
Здравствуйте! В общем проблема уже в заголовке. Нужно,чтобы в функции с 3 параметрами-векторами (string,int,int) эти самые параметры имели...

Задать аргументу значение по умолчанию - C++
Идея такова: есть у меня однонаправленный линейный список и конструктор для инициализации его значений: ListItem(string &amp;f,int y, int...

Значение по-умолчанию для ссылки - C++
Здравствуйте, есть такой код: void iterateTheElements(someClass &amp;parent = someClass ()); Под MVSC все нормально работает, MinGW же на...

Значение по умолчанию передаваемое в функцию - C++
Значение по умолчанию передаваемое в функцию для переменных допустим int-типа установить можно вот так some_func(int i = 0){ Но вот как...

Перегрузка функций. Значение по умолчанию - C++
Добрый вечер. Прощу помочь разобраться с вопросом. Проблема в следующем. Есть класс, в нем есть перегруженная функция с разным...

Ошибка: отсутствует значение, используемое по умолчанию - C++
В общем задание нужно сделать через функцию вроде написал но всё время пишет вот такую ошибку error C2548: find_min_colums: отсутствует...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Dekio
Фрилансер
Эксперт С++
5837 / 1218 / 214
Регистрация: 23.11.2010
Сообщений: 3,378
Записей в блоге: 1
20.08.2013, 18:35 #2
Цитата Сообщение от BigLow Посмотреть сообщение
Конструкторов никаких нет
А как же конструктор по умолчанию?
1
ViktorKozlov
133 / 125 / 2
Регистрация: 13.12.2012
Сообщений: 293
20.08.2013, 18:36 #3
Тогда это будет явный вызов конструктора по умолчанию, который вызывает конструкторы по умолчанию для всех элементов-объектов и устанавливает 0 у встроенных типов
1
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.08.2013, 18:47  [ТС] #4
Цитата Сообщение от ViktorKozlov Посмотреть сообщение
который вызывает конструкторы по умолчанию для всех элементов-объектов
т.е вызовится конструктор по умолчанию для переменной x запишет 0, потом вызовит конструктор по умолчанию для переменной y и тоже запишет 0.

Просто непонятно откуда Point знает для каких переменных надо вызывать конструкторы
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 18:50 #5
А если добавить такой конструктор?
C++
1
2
Point():x(),y(){
}
1
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.08.2013, 19:09  [ТС] #6
Цитата Сообщение от Croessmah Посмотреть сообщение
А если добавить такой конструктор?
это уже мы сами написали и как хотим, так и устанавливаем значения для всех переменных в структуре

Croessmah, Получается, если в классе не будет конструктора по умолчанию, то будет вот такой автоматически создан?

C++
1
2
3
4
5
6
struct Point
{
    int x, y;
 
    Point() : x(), y()  {}
};
Добавлено через 14 минут
Наверно ViktorKozlov все таки прав. Вызываются конструкторы по умолчанию для всех переменных в структруре
Тут опять вопросы. В каком порядке они вызываются. Сначала для x а потом для y или наоборот?
Хотя это неважно
0
Issues
430 / 365 / 37
Регистрация: 06.08.2012
Сообщений: 961
20.08.2013, 19:30 #7
В случае для пользовательских типов, вызывается конструктор по умолчанию, если он переопеределен пользователем, то выполняет заданную им задачу, если его предоставляет компилятор, он просто создает обьект.
1
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 19:40 #8
Цитата Сообщение от BigLow Посмотреть сообщение
Croessmah, Получается, если в классе не будет конструктора по умолчанию, то будет вот такой автоматически создан?
Копайте в сторону default-initialized и value-initialized
0
Croessmah
Эксперт CЭксперт С++
13228 / 7500 / 845
Регистрация: 27.09.2012
Сообщений: 18,419
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 19:46 #9
Значение по умолчанию
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 19:46
Привет! Вот еще темы с ответами:

Как задать каждому элементу массива значение по умолчанию? - C++
Например я знаю что void max(int t=9){//значение по умолчанию переменой t++; } А как такую штуку сделать для каждого елемента...

Принимает ли первый член неинициализированного массива какое-то значение по умолчанию? - C++
Доброго времени суток! Задался я одним вопросом. есть такой код #include&lt;iostream&gt; using namespace std; int main() { void...

Найти значение 3-го по величине элемента и значение всех элементов массива, которые его превышают, заменить на найденное значение - C++
Работа с массивами:

Значение полей по умолчанию : "нет значения поля по умолчанию"; "Null";"0" - MS Access
Форумчане, доброго времени суток! Подскажите. пожалуйста, как правильно указывать значение поля по умолчанию в таблице Аксесс 2003?? ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.08.2013, 19:46
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru