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

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

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

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

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

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

C++ Инициализация объекта строго константой
Инициализация данных объекта. C++
Как правильно вызывать функцию объекта из другой функции того же объекта? C++
C++ "Повторная" инициализация объекта
C++ Требуется ли при удалении объекта посредством delete указывать тип объекта?
При возврате объекта из функции пишет, что для объекта не определен констуктор копирования C++
C++ Инициализация константного статического объекта - члена класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:08     инициализация объекта #2
Leonchik_, так он по-любому инициализируется (т.е. конструктор по-любому вызывается) после присвоения указателю выделенного места в памяти с помощью new.
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,469
21.01.2014, 19:11     инициализация объекта #3
Цитата Сообщение от Leonchik_ Посмотреть сообщение
Как проинициализировать объект созданный с помощью new?
ну например так
C++
1
2
MyClass * mcl=new MyClass(5);
int * d=new int(10);
Цитата Сообщение от BumerangSP Посмотреть сообщение
так он по-любому инициализируется (т.е. конструктор по-любому вызывается) после присвоения указателю выделенного места в памяти с помощью new.
кроме тех случаев когда в классе нет конструктора без параметров, или с параметрами по умолчанию
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:16     инициализация объекта #4
Цитата Сообщение от ValeryS Посмотреть сообщение
кроме тех случаев когда в классе нет конструктора без параметров, или с параметрами по умолчанию
Тогда компилятор сам создает конструктор и он все равно вызывается) Если конечно никаких других в классе не определено. Иначе компайл еррор.
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,469
21.01.2014, 19:22     инициализация объекта #5
Цитата Сообщение от BumerangSP Посмотреть сообщение
Тогда компилятор сам создает конструктор и он все равно вызывается)
нет
Цитата Сообщение от BumerangSP Посмотреть сообщение
Если конечно никаких других в классе не определено.
вот именно
создал класс а в нем единственный конструктор с аргументом(и)
и что же тогда динамически не создавать объект?
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 19:36     инициализация объекта #6
Не пойму, к чему Вы клоните. Более чем написано ниже, я не хотел сказать.
Миниатюры
инициализация объекта  
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,469
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); // все в порядке
...................................
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 20:20     инициализация объекта #8
ValeryS, да, именно это и описано мной в 4 посте. Да и стоило ли все это лишних обсуждений, потому как если конструктор не вызовется, то дальнейшей работы с объектом все равно не будет?
mishelle92
61 / 60 / 20
Регистрация: 09.10.2012
Сообщений: 189
Завершенные тесты: 1
21.01.2014, 20:21     инициализация объекта #9
Еще конструктор по умолчанию можно занести в private и нельзя будет создавать объекты этим конструктором.
ValeryS
Модератор
6505 / 4971 / 459
Регистрация: 14.02.2011
Сообщений: 16,469
21.01.2014, 20:29     инициализация объекта #10
Цитата Сообщение от mishelle92 Посмотреть сообщение
Еще конструктор по умолчанию можно занести в private
и как ты его занесешь?
конструктор по умолчанию создается компилятором
или ты имеешь ввиду конструктор без параметров?
а главное зачем такой изврат? не описывай его да и все
хотя я видел такое применение
в классе переопределен new а конструкторы все приватные
в результате объект можно сказать только динамически
Цитата Сообщение от BumerangSP Посмотреть сообщение
ValeryS, да, именно это и описано мной в 4 посте.
ну а я добавил если конструктора нет то он и не вызовется
Цитата Сообщение от BumerangSP Посмотреть сообщение
то дальнейшей работы с объектом все равно не будет?
разумеется нет но или компилятор ошибку прочухает или при выполнении исключение словим
но как я понял у ТС именно класс с конструктором с параметром
и он не знает как его правильно создать при динамике
BumerangSP
4284 / 1406 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
21.01.2014, 20:36     инициализация объекта #11

Не по теме:

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

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



Цитата Сообщение от ValeryS Посмотреть сообщение
но как я понял у ТС именно класс с конструктором с параметром
Да, возможно. Просто ТС как обычно никак не научатся четко формулировать свой вопрос
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.01.2014, 20:44     инициализация объекта
Еще ссылки по теме:

C++ Указатель и инициализация объекта класса
Инициализация объекта из массива объктов класса C++
C++ Инициализация объекта нулями или мусором
Для агрегатного объекта требуется инициализация с использованием "{.}" C++
C++ Инициализация объекта (конструкторы)

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

Или воспользуйтесь поиском по форуму:
mishelle92
61 / 60 / 20
Регистрация: 09.10.2012
Сообщений: 189
Завершенные тесты: 1
21.01.2014, 20:44     инициализация объекта #12
Цитата Сообщение от ValeryS Посмотреть сообщение
и как ты его занесешь?
конструктор по умолчанию создается компилятором
или ты имеешь ввиду конструктор без параметров?
а главное зачем такой изврат? не описывай его да и все
хотя я видел такое применение
в классе переопределен new а конструкторы все приватные
в результате объект можно сказать только динамически
Да, я имел в виду конструктор без параметров. А так - да, я про это говорил.
Yandex
Объявления
21.01.2014, 20:44     инициализация объекта
Ответ Создать тему
Опции темы

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