Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/80: Рейтинг темы: голосов - 80, средняя оценка - 4.85
 Аватар для Sergey_O
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65

2 Конструктора в Классе

13.03.2010, 12:26. Показов 16826. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мой класс:
C++
1
2
3
4
5
6
7
8
9
class zdanie
{
    int plosh, obm, e;
    char *adres, *vladelec;
public:
    zdanie(int pl, int ob, char adr[30], char vlad[30]);
    zdanie(int el){e=el;};
 
};
Присутствует 2 конструктора. Вопрос в том, как мне использовать вторым, если в main() я сначала обращаюсь к первому:
C++
1
zdanie test(1337,12,"Tver","Velo");
Как мне воспользоваться вторым?

Литературу штудирую, но пока что не нашёл ответа на свой вопрос.

Заранее благодарю за ответ.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.03.2010, 12:26
Ответы с готовыми решениями:

Использование конструктора в классе
class Token { public: string kind; Token(string word) : kind(word) { } }; По какой причине я не могу использовать в этом...

Реализовать в классе 3 конструктора
Реализовать 3 конструктора с разными вариантами инициализации и 1 деструктор Я не могу понять как это сделать. Помогите на примере. ...

Ошибка конструктора в классе наследника
Помогите пожалуйста, выдаёт следующую ошибку в классе наследнике #include "stdafx.h" #include <iostream> using...

13
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 12:39
Sergey_O, никак, точнее, не зачем.
Создай методы установки/получения значения e.
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.03.2010, 12:42
C++
1
2
3
4
5
6
7
int main()
{
    zdanie *test = new zdanie(1337,12,"Tver","Velo");
    //еще какой-то код
    test = new zdanie(5);
    //еще какой-то код
}
1
 Аватар для Aye Aye
373 / 287 / 97
Регистрация: 17.12.2009
Сообщений: 567
13.03.2010, 13:23
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
2
3
4
5
6
7
int main()
{
    zdanie *test = new zdanie(1337,12,"Tver","Velo");
    //еще какой-то код
    test = new zdanie(5);
    //еще какой-то код
}
а куда девается обьект память под который была выделена при инициализации указателя? так разве можно надо это память освободить преред следующим выделеним памяти, наверно...так?
1
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 13:34
Цитата Сообщение от M128K145 Посмотреть сообщение
C++
1
2
3
4
5
6
7
int main()
{
    zdanie *test = new zdanie(1337,12,"Tver","Velo");
    //еще какой-то код
    test = new zdanie(5);
    //еще какой-то код
}
M128K145, уж больно какой-то специфический и весьма сомнительный способ.

Как я понял, автор хочет вызвать второй конструктор, чтобы установит значение e.
Почему бы не создать метод для его установки?
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.03.2010, 14:09
Aye Aye, в Java и C# происходит именно так как я написал.
CyBOSSeR, вопрос был в том как вызвать конструктор, а логика - это дело автора
1
Эксперт С++
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
13.03.2010, 14:40
В яве с сишарпом происходит, так за это и цену приходится платить соответствующую. А вот в C++ за удалением объектов надо следить самому, выбирая наиболее подходящий для своих целей способ.
1
 Аватар для Sergey_O
5 / 5 / 3
Регистрация: 09.12.2009
Сообщений: 65
13.03.2010, 14:44  [ТС]
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
M128K145, уж больно какой-то специфический и весьма сомнительный способ.

Как я понял, автор хочет вызвать второй конструктор, чтобы установит значение e.
Почему бы не создать метод для его установки?
Через метод не проблема, так и было сделано, просто искал альтернативы в виде ещё одного конструктора.

В данный момент поглядывая в "С ++ - программирование на языке высокого уровня Т.А.Павловская", и там в примерах спокойно используется по 5-6 конструкторов, мне поэтому и было не понятно, как так!)

Благодарю за ответы всех.
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
13.03.2010, 14:54
Сейчас проверил что происходит. Если не удалять - то под объект будет выделена еще память, с той памятью неизвестно что. Если удалять, то он заменится и запишется по адресу предыдущего объекта. По этому так
C++
1
2
3
4
5
6
7
8
int main()
{
    zdanie *test = new zdanie(1337,12,"Tver","Velo");
    //еще какой-то код
    delete test;
    test = new zdanie(5);
    //еще какой-то код
}
Nick Alte, просто в C# и Java есть gc
1
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
13.03.2010, 15:13
1.как сказал M128K145
2.лучше бы вместо второго конструктора юзать метод обыный
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
13.03.2010, 15:21
Цитата Сообщение от Sergey_O Посмотреть сообщение
В данный момент поглядывая в "С ++ - программирование на языке высокого уровня Т.А.Павловская", и там в примерах спокойно используется по 5-6 конструкторов, мне поэтому и было не понятно, как так!)
Конструктор это метод предназначенный для инициализации объекта в момент создания. В зависимости от потребностей в классе может присутствовать несколько конструкторов, которые по разному позволяют выполнить инициализацию объекта.
Пример:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Foo
{
public:
  Foo()
  : bar (0)
  {}
 
  Foo(int bar)
  : bar(bar)
  {}
private:
  int bar;
};
 
int main()
{
  // ...
  Foo foo1;    // Вызывается Foo::Foo()
  Foo foo2(1)  // Вызывается Foo::Foo(int)
  // ...
}
M128K145, если не удалять будет утечка памяти, выделенной первый раз.
0
 Аватар для AnonymC
1183 / 468 / 87
Регистрация: 23.06.2009
Сообщений: 6,390
13.03.2010, 15:40
а разве нельзя перегружать констрктор как обычную функцию?
0
1261 / 799 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
13.03.2010, 15:46
Медведъ:
Можно, это и есть перегрузка конструкторов.
C++
1
2
  zdanie(int pl, int ob, char adr[30], char vlad[30]);
         zdanie(int el){e=el;};
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
13.03.2010, 22:39
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Конструктор это метод предназначенный для инициализации объекта в момент создания
Хочется добавить, что конструктор функцией НЕ является. А потому его "вызвать" нельзя
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.03.2010, 22:39
Помогаю со студенческими работами здесь

string обьявленый в классе передать в параметры конструктора
class String{ char str; string str2; public: String(char string){ strcpy(str,string); } String(string newStr){...

Возвращаемый тип конструктора копирования в абстрактном классе
Здравствуйте! Есть абстрактный класс (с "чистыми" виртуальными функциями), и в нем необходимо явно определить конструктор копирования....

Как понять, что реализация конструктора в классе произошла?
VISUAL C++ Как понять что реализация конструктора в классе произошла ?

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

Ошибка "Необъявленный идентификатор" при создании конструктора в наследственном классе
Выдает ошибку Необъявленный идентификатор a b,когда создаю конструктор в наследственном классе #include "stdafx.h" #include...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru