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

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

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

инициализация объекта - C++

21.01.2014, 18:55. Просмотров 384. Ответов 11
Метки нет (Все метки)

Как проинициализировать объект созданный с помощью new?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2014, 18:55
Здравствуйте! Я подобрал для вас темы с ответами на вопрос инициализация объекта (C++):

Инициализация данных объекта. - C++
Помогите найти ошибку. class Peson{ private: int Number; char FIO; int Pol; float Age; public: void print(); ...

Инициализация объекта (конструкторы) - C++
С помощью чего инициализируется этот объект f2? #include <iostream> //============================================== class...

Указатель и инициализация объекта класса - C++
Здраствуйте! Имеется большой класс импортирующий данные из файлов 3D-модели. В моём приложении он будет инициализироваться один раз для...

Инициализация объекта строго константой - C++
Пишу class Class { private: const int *Int; public: Class(const int *b) { Int=b; } int get() { return *Int; } ...

Инициализация объекта из массива объктов класса - C++
Ребята подскажите, как создать массив объектов класса с инициализацией каждого? CLASS1* class1; //нужно к примеру 5 объектов class1...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:08 #2
Leonchik_, так он по-любому инициализируется (т.е. конструктор по-любому вызывается) после присвоения указателю выделенного места в памяти с помощью new.
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
21.01.2014, 19:11 #3
Цитата Сообщение от Leonchik_ Посмотреть сообщение
Как проинициализировать объект созданный с помощью new?
ну например так
C++
1
2
MyClass * mcl=new MyClass(5);
int * d=new int(10);
Цитата Сообщение от BumerangSP Посмотреть сообщение
так он по-любому инициализируется (т.е. конструктор по-любому вызывается) после присвоения указателю выделенного места в памяти с помощью new.
кроме тех случаев когда в классе нет конструктора без параметров, или с параметрами по умолчанию
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:16 #4
Цитата Сообщение от ValeryS Посмотреть сообщение
кроме тех случаев когда в классе нет конструктора без параметров, или с параметрами по умолчанию
Тогда компилятор сам создает конструктор и он все равно вызывается) Если конечно никаких других в классе не определено. Иначе компайл еррор.
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
21.01.2014, 19:22 #5
Цитата Сообщение от BumerangSP Посмотреть сообщение
Тогда компилятор сам создает конструктор и он все равно вызывается)
нет
Цитата Сообщение от BumerangSP Посмотреть сообщение
Если конечно никаких других в классе не определено.
вот именно
создал класс а в нем единственный конструктор с аргументом(и)
и что же тогда динамически не создавать объект?
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:36 #6
Не пойму, к чему Вы клоните. Более чем написано ниже, я не хотел сказать.
0
Миниатюры
инициализация объекта  
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
21.01.2014, 20:10 #7
я клоню к тому что если программист не описал конструктор то компилятор создаст конструктор по умолчанию(чаще всего это пустая функция)
а если описал хоть один конструктор, то конструктор по умолчанию не создается
пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
class MyClass
{
 int a;
public:
 MyClass(int b) { a=b;};
}
.......................
MyClass A;// ошибка нет конструктора без параметров, а по умолчанию не создается
MyClass B(5);// все в порядке
MyClass* C= new MyClass; // ошибка
MyClass* D= new MyClass(7); // все в порядке
...................................
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 20:20 #8
ValeryS, да, именно это и описано мной в 4 посте. Да и стоило ли все это лишних обсуждений, потому как если конструктор не вызовется, то дальнейшей работы с объектом все равно не будет?
0
mishelle92
62 / 61 / 20
Регистрация: 09.10.2012
Сообщений: 196
Завершенные тесты: 1
21.01.2014, 20:21 #9
Еще конструктор по умолчанию можно занести в private и нельзя будет создавать объекты этим конструктором.
0
ValeryS
Модератор
6633 / 5040 / 466
Регистрация: 14.02.2011
Сообщений: 16,850
21.01.2014, 20:29 #10
Цитата Сообщение от mishelle92 Посмотреть сообщение
Еще конструктор по умолчанию можно занести в private
и как ты его занесешь?
конструктор по умолчанию создается компилятором
или ты имеешь ввиду конструктор без параметров?
а главное зачем такой изврат? не описывай его да и все
хотя я видел такое применение
в классе переопределен new а конструкторы все приватные
в результате объект можно сказать только динамически
Цитата Сообщение от BumerangSP Посмотреть сообщение
ValeryS, да, именно это и описано мной в 4 посте.
ну а я добавил если конструктора нет то он и не вызовется
Цитата Сообщение от BumerangSP Посмотреть сообщение
то дальнейшей работы с объектом все равно не будет?
разумеется нет но или компилятор ошибку прочухает или при выполнении исключение словим
но как я понял у ТС именно класс с конструктором с параметром
и он не знает как его правильно создать при динамике
0
BumerangSP
4286 / 1408 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 20:36 #11

Не по теме:

ValeryS, там где мое предложение с вопросом, знак вопроса относился к

Цитата Сообщение от BumerangSP Посмотреть сообщение
стоило ли все это лишних обсуждений
Т.е. не к вопросу о возможной работе)



Цитата Сообщение от ValeryS Посмотреть сообщение
но как я понял у ТС именно класс с конструктором с параметром
Да, возможно. Просто ТС как обычно никак не научатся четко формулировать свой вопрос
0
mishelle92
62 / 61 / 20
Регистрация: 09.10.2012
Сообщений: 196
Завершенные тесты: 1
21.01.2014, 20:44 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
и как ты его занесешь?
конструктор по умолчанию создается компилятором
или ты имеешь ввиду конструктор без параметров?
а главное зачем такой изврат? не описывай его да и все
хотя я видел такое применение
в классе переопределен new а конструкторы все приватные
в результате объект можно сказать только динамически
Да, я имел в виду конструктор без параметров. А так - да, я про это говорил.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2014, 20:44
Привет! Вот еще темы с ответами:

Инициализация константного статического объекта - члена класса - C++
Здравствуйте, у меня возникла проблема с инициализацией статического объекта, который является членом класса. Этот объект должен быть...

Для агрегатного объекта требуется инициализация с использованием "{.}" - C++
Помогите.. как засунуть \\" + string(z) + "\\ правельно unsigned long Size = 256; char *z = new char; ...

"Повторная" инициализация объекта - C++
class A { int x, y; public A() { x = y = 100; } public A(int xx, int yy) { x = xx; y = yy;} }; A a1 = A(); a1 =...

Требуется ли при удалении объекта посредством delete указывать тип объекта? - C++
например, есть указателиvoid *p1; void *p2; есть VCL-объект TButton, есть самописный класс TMyClass; создаются объектыp1=new...


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

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

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