Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
2 / 1 / 1
Регистрация: 23.02.2015
Сообщений: 73
1

Присваивание входных параметров в конструкторе

07.05.2017, 20:32. Показов 1753. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день. Недавно наткнулся на код такого типа
C++
1
2
3
4
5
6
7
8
9
10
11
#define MaxSize 100
class Test
{
private:
    int Size;
public:
    Test(int size = MaxSize)
    {
            Size = size;
    }
}
Подскажите, для чего происходит присваивание в строке "Test(int size = MaxSize)" ?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2017, 20:32
Ответы с готовыми решениями:

Ошибка при попытке инициализации входных параметров в конструкторе
Доброго времени. При попытке инициализировать поле State макроопределением компилятор выдаёт...

Обработка входных параметров функцией
Приветствую. Начала изучать C++. Читаю Страуструпа. Заголовочный файл, что прикладывался к книге -...

Проверка входных параметров конструктора
Всем привет! Как правильно выходить из конструктора если какой либо входной параметр имеет не...

Проверка правильности входных параметров конструктора
Как проверить допустимость передаваемых входных параметров конструктора класса? Точнее, проверку...

7
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
07.05.2017, 20:34 2
Значение по умолчанию
0
2 / 1 / 1
Регистрация: 23.02.2015
Сообщений: 73
07.05.2017, 20:37  [ТС] 3
Т.е. это некоторый аналог конструктора по умолчанию?
Но тогда проблема в том, что создавая объекты
C++
1
2
    Test test1(a);
    Test test2();
у test2 нет доступа к полю Size (любая попытка получить Size у test2 не компилируется, с test1 всё в порядке)
0
21 / 21 / 10
Регистрация: 11.09.2015
Сообщений: 103
07.05.2017, 20:41 4
Hait, это не "присваивание", а "умолчание". Вдобавок, такой пользовательские конструктор заменяет "умолчательный" конструктор. Но тело конструктора неоптимально. Правильнее будет "инициализация".
C++
1
Test (int size = MaxSize) : Size (size) {}
А теперь и ты скажи, для чего существуют учебники программирования?
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
07.05.2017, 20:43 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#define MaxSize 100
class Test
{
public:
    int Size;
public:
    Test(int size = MaxSize)
    {
            Size = size;
    }
};
int main(){
    Test t;
    std::cout<<t.Size;
}
0
2 / 1 / 1
Регистрация: 23.02.2015
Сообщений: 73
07.05.2017, 20:49  [ТС] 6
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
25
26
27
28
29
30
31
32
#include <iostream>
 
#define MaxSize 100
using namespace std;
 
 
class Test
{
public:
    Test(int size = MaxSize);
    ~Test();
    int Size;
};
 
Test::Test(int size)
{
    Size = size;
}
 
Test::~Test()
{
}
 
int main()
{
    int a;
    cin >> a;
    Test test1(a);
    Test test2();
    cout << test1.Size << ' ' << test2.Size << endl;
    return 0;
}
Вот такой код пытался скомпилировать в vs2015, на что
Миниатюры
Присваивание входных параметров в конструкторе  
0
Эксперт С++
1624 / 954 / 782
Регистрация: 06.02.2016
Сообщений: 2,452
Записей в блоге: 31
07.05.2017, 20:51 7
Лучший ответ Сообщение было отмечено Hait как решение

Решение

Цитата Сообщение от Hait Посмотреть сообщение
Test test2();
Уберите скобки
1
2 / 1 / 1
Регистрация: 23.02.2015
Сообщений: 73
07.05.2017, 21:04  [ТС] 8
Блин, очень глупо. Благодарю.
Именно из-за этих скобок и возник вопрос про инициализацию по умолчанию.

Добавлено через 10 минут
Kudryashov_R_D, к моему глубокому сожалению я более чем за год знакомства с С++ ни разу не встречался с таким способом инициализации по умолчанию и всегда использовал конструктор по умолчанию.
А теперь скажите, для чего на форуме существует форум для начинающих?
0
07.05.2017, 21:04
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2017, 21:04
Помогаю со студенческими работами здесь

Файл входных параметров
Собственно было пару консольных приложений которые в качестве входных данных считывали из...

MIDLET: передача входных параметров?
Доброго времени суток, Уважаемые! В Java, при старте программы, главной функции main(String...

Посчитать сумму входных параметров
def suma(*args): some code... print suma(1, 2, 3) # should be 6 print suma(4)(5, 6) #...

Проверка входных параметров на тип
Приветствую Всех. Прошу подсказать. как проверить входной параметр на тип: if(param.Text !=...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru