Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
Заблокирован
1

Есть ли разница между MyClass *c = new MyClass() и MyClass *c = new MyClasss;

26.04.2013, 08:29. Просмотров 2472. Ответов 27
Метки нет (Все метки)

Собственно, что происходит, когда создаёшь объект класса без скобок в название после new?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2013, 08:29
Ответы с готовыми решениями:

Vector<MyClass> MyVector или вектор типа MyClass - C++
Допустим у меня есть код ежедневника с классом Time, тут есть проверка времени, добавление...

Отличие Myclass& от Myclass* в аргументах функции
Доброго времени суток. Новичок в С++ (раньше писал на всяких питонах и пхп). Очень нравится...

Перебрать List<MyClass> со вложенными списками List<MyClass> в каждом элементе
Есть древовидная структура вида: List&lt;MyClass&gt; myClassList; //... public class MyClass{ ...

Char *a = myclass
Здраствуйте! Помогите пж: учу С++ давно и столкнулся с такой проблемой: надо преобразовать класс...

27
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
26.04.2013, 11:28 21
FarStar, Все равно, есть user-defined конструктор, потому всегда будет вызван он. А вот какова будет инициализация в конструкторе - дело того кто его пишет.
0
Заблокирован
26.04.2013, 11:37  [ТС] 22
Цитата Сообщение от ForEveR Посмотреть сообщение
FarStar, Все равно, есть user-defined конструктор, потому всегда будет вызван он. А вот какова будет инициализация в конструкторе - дело того кто его пишет.
Ну вот в моём примере конструкторе ничего не инициализировалось, значит всё мусор?
А если нет юзер конструктора, тогда что?
я просто пытаюсь понять, в чём разница между new A() и new A ? видел такой вопрос в одном тесте brainbrench
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
26.04.2013, 11:41 23
Цитата Сообщение от Tulosba Посмотреть сообщение
быдлером
назовите на чем вы сейчас пишите, я тоже хочу назвать эту среду гамном имеющей недостатки
Цитата Сообщение от Tulosba Посмотреть сообщение
Что за STD?
ну типа std::и_все_что_тут_пишется
Цитата Сообщение от Tulosba Посмотреть сообщение
Но когда проект содержит несколько сотен тысяч строк
когда проект содержит сотни тысяч строк говонокода вдруг оказывается виноватой среда разработки... не, пример хороший, просто реально за практику работы не сталкивался с таким. делал и так и сяк (то есть пользуясь классами VCL или пользуясь std::string что мне ближе). ни разу не "попал". может "гребешок" был редкий или "чесал" в другую сторону.

Добавлено через 1 минуту
Цитата Сообщение от FarStar Посмотреть сообщение
если нет юзер конструктора, тогда что?
тогда среда сама сгенерит его. для простых полей инициализации не будет. для объектов будут вызываться констркторы по умолчанию
0
В астрале
Эксперт С++
8023 / 4780 / 654
Регистрация: 24.06.2010
Сообщений: 10,558
26.04.2013, 11:43 24
Я пожалуй, слегка был не прав, приведя цитаты из стандарта С++11. Тут слегка изменились правила. Вот из 03.
A new-expression that creates an object of type T initializes that object as follows:
— If the new-initializer is omitted:
— If T is a (possibly cv-qualified) non-POD class type (or array thereof), the object is default-
initialized (8.5). If T is a const-qualified type, the underlying class type shall have a user-declared
default constructor.
— Otherwise, the object created has indeterminate value. If T is a const-qualified type, or a (possibly
cv-qualified) POD class type (or array thereof) containing (directly or indirectly) a member of
const-qualified type, the program is ill-formed;
— If the new-initializer is of the form (), the item is value-initialized (8.5);
— If the new-initializer is of the form (expression-list) and T is a class type, the appropriate constructor is
called, using expression-list as the arguments (8.5);
— If the new-initializer is of the form (expression-list) and T is an arithmetic, enumeration, pointer, or
pointer-to-member type and expression-list comprises exactly one expression, then the object is initial-
ized to the (possibly converted) value of the expression (8.5);
— Otherwise the new-expression is ill-formed.

To zero-initialize an object of type T means:
— if T is a scalar type (3.9), the object is set to the value of 0 (zero) converted to T;
— if T is a non-union class type, each nonstatic data member and each base-class subobject is zero-
initialized;
— if T is a union type, the object’s first named data member89) is zero-initialized;
— if T is an array type, each element is zero-initialized;
— if T is a reference type, no initialization is performed.
To default-initialize an object of type T means:
— if T is a non-POD class type (clause 9), the default constructor for T is called (and the initialization is
ill-formed if T has no accessible default constructor);
— if T is an array type, each element is default-initialized;
— otherwise, the object is zero-initialized.
To value-initialize an object of type T means:
— if T is a class type (clause 9) with a user-declared constructor (12.1), then the default constructor for T is
called (and the initialization is ill-formed if T has no accessible default constructor);
— if T is a non-union class type without a user-declared constructor, then every non-static data member
and base-class component of T is value-initialized;
— if T is an array type, then each element is value-initialized;
— otherwise, the object is zero-initialized

Scalar types, POD-struct types,
POD-union types (clause 9), arrays of such types and cv-qualified versions of these types (3.9.3) are collec-
tively called POD types.

A POD-struct is an aggregate class that has no non-static data members of type non-POD-struct,
non-POD-union (or array of such types) or reference, and has no user-defined copy assignment operator
and no user-defined destructor.
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.04.2013, 11:46 25
Цитата Сообщение от vxg Посмотреть сообщение
назовите на чем вы сейчас пишите, я тоже хочу назвать эту среду гамном имеющей недостатки
Всё говно, кроме мочи. У всех есть недостатки, только кто-то их исправляет, кто-то нет, у кого-то больше, у кого-то меньше. Ну и т.д, и т.п. На текущий момент можете похаить VS2010
Цитата Сообщение от vxg Посмотреть сообщение
ну типа std::и_все_что_тут_пишется
Если Вам не сложно, создайте тему, пообсуждаем. Потому что тут это уже дикий оффтоп и холивар.
Про глюки BC6 тоже можно создать тему, но для себя я уже решил никогда к этой среде не возвращаться, поэтому переубедить меня уже нельзя
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
26.04.2013, 11:49 26
Цитата Сообщение от ForEveR Посмотреть сообщение
Я пожалуй, слегка был не прав, приведя цитаты из стандарта С++11. Тут слегка изменились правила. Вот из 03.
кстати, а как будет вести себя массив?
C++
1
my_type *a = new my_type[10];
есть ли тут способ управлять конструкторами создаваемых объектов и что будет происходить если конструктор без параметров был запрещен в определении типа?
0
:)
Эксперт С++
4763 / 3257 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
26.04.2013, 11:56 27
Цитата Сообщение от vxg Посмотреть сообщение
и что будет происходить если конструктор без параметров был запрещен в определении типа?
То массив создать не получится. При создании массива вызывается конструктор по умолчанию.
0
Модератор
3309 / 2099 / 334
Регистрация: 13.01.2012
Сообщений: 8,160
26.04.2013, 12:01 28
Цитата Сообщение от Tulosba Посмотреть сообщение
похаить VS2010
среда исторически неполноценная нагло претендующая на извращение самого лучшего на свете языка путем приписывания к нему различного рода уродских расширений (в том числе, управляемых), деградирует все сильнее с каждой новой версией, предпринимает попытки залезть в душу при помощи выпуска свободных версий и наклеивания страз, судорожно попытается быть похожей на Borland C++ Builder 6 не смотря на органическую несовместимость своего графического дизайнера со здравым смыслом (к слову сказать XE так же пытается быть похожим на VS - зачем - это вопрос), интерфейс крайне враждебен и неудобен, настройки настолько сложны (некоторые этим хвалятся наивно полагая что теперь они могут настроить каждую строчку в своей программе), что легче пересесть на Linux (причем предварительно написав ядро, компилятор и выполнив сборку на собственноручно изготовленном чипе) имеющая свои недостатки

Добавлено через 1 минуту
Цитата Сообщение от Tulosba Посмотреть сообщение
То массив создать не получится. При создании массива вызывается конструктор по умолчанию.
логично. думал может чего не знаю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.04.2013, 12:01

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

DataGridViev = BindingList<MyClass>
Доброго дня всем! dataGridViev = BindingList&lt;MyClass&gt; появляются пустые строки! какой метод...

Import com.test.MyClass.*
Добрый день! Объясните пожалуйста что дает импорт когда мы пишем ClassName.*, например import...

Сортировка BindingList<MyClass>
Как отсортировать этот список без переписываний туда-сюда по 10 раз? IEnumerable&lt;D1&gt; Query;...

Поиск в List<MyClass>
Здравствуйте у меня такой вопрос я создал класс с тремя полями данных разного типа class...


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

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

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