Войти
ФлеймФорумПрограммирование

Нубовопросы по С++

Страницы: 1 2 39 10 Следующая »
#0
19:38, 4 дек. 2012

Что бы не создавать отдельные темы для каждого маленького вопроса, предлагаю постить сюда.


#1
19:40, 4 дек. 2012

В чем выгода определять структуры вот так:

typedef struct MyStruct {...} MyStruct;

Чем просто так:

struct MyStruct {...};

Это какой-то трюк?

#2
19:44, 4 дек. 2012

AvrDragon
> Это какой-то трюк?

Это вопрос совместимости с C. Там struct не заводил глобального идентификатора для типа данных. Эта техника известна как struct tag по моему или как то так.

#3
20:11, 4 дек. 2012

=A=L=X=
А, тоесть мы создаем единственный экземпляр структуры MyStruct с таким же именем, и в других частях программых этот тип будет заменен на его описание. По сути препроцессор?

#4
20:16, 4 дек. 2012

=A=L=X=
Нашел, спасибо за наводку
http://stackoverflow.com/questions/612328/difference-between-stru… f-struct-in-c

#5
22:26, 4 дек. 2012

В чем выгода определять структуры вот так:

class MyStruct {...};

Чем просто так:

struct MyStruct {...};

Это какой-то трюк?
Есть ли разница в издержках системных ресурсах?

#6
22:29, 4 дек. 2012

Rooctor
В первом случае члены по умолчанию private, во втором - public.

#7
22:33, 4 дек. 2012

Rooctor
> В чем выгода определять структуры вот так:
> class MyStruct {...};
> Чем просто так:
> struct MyStruct {...};
> Это какой-то трюк?
  Класс занимает больше памяти, где-то тут были
тесты и там классы работали медленее.

#8
22:40, 4 дек. 2012

RenGD
> Класс занимает больше памяти, где-то тут были
> тесты и там классы работали медленее.

херня.

Rooctor
> class MyStruct {...};

struct A: B{};  //для структр паблик наследование

class A: B{}; //для классов приватное наследование


инвертируются модификаторы доступы.
Мемберы - аналогично

#9
22:44, 4 дек. 2012

Если сделать у базового класса виртуальный деструктор, то у всех его наследников деструктор становится виртуальным автоматически?
Или надо для всех наследников писать к деструктору ключевое слово virtual?

#10
22:48, 4 дек. 2012

Mephi1984
автоматически, так же как и любые вирт. функции

#11
23:29, 4 дек. 2012

Kartonagnick
> struct A: B{}; //для структр паблик наследование
>
> class A: B{}; //для классов приватное наследование

здесь было бы справедливо добавить для наследования определение: "по умолчанию"

ну и собсно то, какая разница? Экономия на размерах исходника? неужто это всё?

Kartonagnick
> RenGD
> > Класс занимает больше памяти, где-то тут были
> > тесты и там классы работали медленее.
>
> херня.
И всё ж?

#12
23:50, 4 дек. 2012

Rooctor
> И всё ж?
что и всё ж? он всё правильно сказал херня хернёй, неверишь посмотри асм выхлоп

#13
0:11, 5 дек. 2012

Rooctor
> здесь было бы справедливо добавить для наследования определение: "по умолчанию"

Модификатор доступа не является определением "наследования"


Rooctor
> ну и собсно то, какая разница?

Иерархии на шаблонах.
В зависимости от 1-2-3 типов можно сгенерировать целую систему с развитой внутренней инфраструктурой.
Однако шаблон не знает Т - это класс, или структура. И за программиста не выберет подходящее ключевое слово.
Явное указание модификатора исключает целый класс ошибок в мета программировании.

#14
0:18, 5 дек. 2012

Rooctor
> И всё ж?

объект в стиле си ничем не отличается от объекта в стиле с++, кроме возможной отсибятины комплиятора.

по стандарту на любые объекты общие правила. В том числе и на пустые. Это значит sizeof(пустышка) должно вернуть валидное значение
(пустышки тоже могут быть в массивах, а значит у них должен быть размер)

структуры и эквивалентные классы после компиляции могут считаться синонимами.
пустышек это так же касается.

Страницы: 1 2 39 10 Следующая »
ФлеймФорумПрограммирование

Тема в архиве.