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

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

Войти
Регистрация
Восстановить пароль
 
weidmann
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 20
#1

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

02.12.2013, 19:07. Просмотров 684. Ответов 6
Метки нет (Все метки)

У меня получается создавать конструктор по умолчанию если в хедере эти значения указаны:
C++
1
2
3
4
5
6
7
8
class Unit
{
protected:
    string name;
    string rang;
    int formSize;
public:
    Unit(string name0 = "U", string rang0 = "R", int formSize0 = 0);
А в cpp-файле:
C++
1
2
3
4
5
Unit::Unit(string name0, string rang0, int formSize0) {
    name = name0;
    rang = rang0;
    formSize = formSize0;
}
А можно ли сделать так, чтобы в хедере не объявлялись значения по умолчанию, а объявлялись в cpp-файле?
Чтобы в хедере было:
C++
1
Unit(string, string, int);
А в cpp:
C++
1
Unit::Unit(string name0 = "U", string rang0 = "R", int formSize0 = 0)
Конструктор работает, но не является конструктором по умолчанию. Есть ли какой-то способ решения, или это невозможно в принципе? Просто очень хочется, чтобы в хедере не было никаких присваиваний и всё было по минимуму
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 19:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Конструктор по умолчанию (C++):

Будет ли определен компилятором конструктор по умолчанию, если есть конструктор с дефолтным параметром? - C++
Добрый день, сразу к делу, есть некий класс class some { int x; public: some(int y = 1) : x(y) {} };

Создать класс. Написать конструктор по умолчанию, конструктор с параметрами. Перегрузить операции «меньше» и «равно» - C++
Помогите пожалуйста, хоть с одним из заданий. 1. Создать класс. Написать конструктор по умолчанию, конструктор с параметрами....

Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно? - C++
Можно ли использовать конструктор по умолчанию и конструктор инициализации одновременно?

Создать класс "Вектор" и реализовать конструктор по умолчанию, конструктор копирования и деструктор - C++
Всем доброго времени суток! нужна ваша помощь! нужно создать класс вектор и реализовать конструктор по умолчанию, копирования и...

Конструктор класса не видит конструктор по умолчанию другого класса - C++
Ошибка, естественно, в Classes.cpp, в строке 20. Ругается, что у класса TailNode нет конструктора по умолчанию, хотя он там, конечно, есть....

Конструктор по умолчанию - C++
Показывает ошибку : 1 IntelliSense: для класса "tovar" не существует конструктор по умолчанию Подскажите пожалуйста как сделать ...

6
0x10
2548 / 1728 / 264
Регистрация: 24.11.2012
Сообщений: 4,348
02.12.2013, 19:10 #2
1. Аргументы по умолчанию должны быть в заголовочном файле.
2. Если конструктор может быть вызван без аргументов, то это конструктор по уморчанию.
Т.е. в исходном варианте все ок, что именно не устраивает?
0
weidmann
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 20
02.12.2013, 19:15  [ТС] #3
Просто хотел узнать, можно ли значения по умолчанию указывать не в заголовочном файле, чтобы в списке аргументов были только типы, а в реализации конструктора уже показывать, что существуют значения по умолчанию для этих аргументов
0
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,804
Записей в блоге: 1
02.12.2013, 19:34 #4
А как же тогда при компиляции цпп файла, в который подключен h-файл с классом, компилятор узнает, каковы значения по умолчанию?
Компилятор же может видеть только один цпп файл!
0
weidmann
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 20
02.12.2013, 21:20  [ТС] #5
Ну в этом цпп файле же и прописаны эти значения по умолчания, разве нет?
0
Kuzia domovenok
2125 / 1955 / 194
Регистрация: 25.03.2012
Сообщений: 6,804
Записей в блоге: 1
02.12.2013, 21:29 #6
Я писал про main.cpp, блин! Файл юнит.цпп в момент компиляции(мейна) вообще не виден!
Вот и ответ! Откуда компилятор узнает твои умолчания?
1
weidmann
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 20
02.12.2013, 21:33  [ТС] #7
Спасибо за разъяснения. Вопрос решён
0
02.12.2013, 21:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.12.2013, 21:33
Привет! Вот еще темы с ответами:

Конструктор по умолчанию - C++
Здраститя. #include <iostream> using namespace std; class random { public: random(int b){a=b;} ~random(){} int...

Конструктор по умолчанию - C++
Я то ли динамику недопоняла, то ли классы, то ли конструктор... И теперь совсем запуталась. Что нужно написать в конструкторе без...

Конструктор по умолчанию - C++
как использовать конструктор по умолчанию в конструкторе с параметром? К по умолчанию заполняет массив заранее определёнными символами, а...

Конструктор по умолчанию - C++
Всем привет! Если в классе вообще нет конструктора, чем будут инициализироваться члены класса? И в чем отличие объект() и объект...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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