Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Это полезно в некоторых случаях, таже инициализация. Я, например, при решении задач на однонаправленные списки с заглавным звеном, в которых удаление списка требовалось всего сразу, а не отдельных его элементов, делал след образом:
struct node{
//свойства
...
//указатель на след звено
node *pNext;
node(){pNext=NULL;//и инициализация других свойств};
~node(){delete pNext;} //цепная реакция
}
ах ты бедненький необразованный паскалист! срочно в школу) разница в определении области видимости членов по умолчанию... есть еще особенности нахождения указателя на vtable в памяти...
ну насколько я помню (если канеш не путаю ничего), в структуре указатель на таблицу виртуальных функций всегда в конце данных, а в классе - не всегда... то есть над структурой можно реализовывать всякий говнокод, оперируя со смещением члена структуры относительно "базового адреса" структуры...
Какой-нибудь компилятор, возможно, и захочет зачем-то реализовать подобный гемморой, но что-то мало верится. В практически всех ныне живущих компиляторах указатель на VMT всегда сидит в самом начале, независимо от того, как объявлен класс - со 'struct' или с 'class'.
"Области видимости"? Можно поподоробнее, про "область видимости". Я вот, например, прекрасно знаю различия между class и struct, но как к этому прикрутить "область видимости" в упор не вижу.
Да, и какие это такие особенности с нахождением "указателя на vtable"?
И? Где здесь "области видимости"? На всякий случай напомню, что и видимость и область видимости - строго определенные в языке термины (английский аналоги - visibility, scope). А 'public' и 'private' - спецификаторы доступа, которые к видимости никакого отношения не имеют вообще. Более того, одним из ключевых свойств разграничения доступа в С++ является то, что на видимость они никак не влияют (что зачастую удивляет новичков, ожидающих, что private члены будут невидимы снаружи). Private члены класса видимы снаружи абсолютно точно так же, как и public члены класса. А вот доступа к private членам извне нет. Не надо путать видимость с доступом.
А уж именно области видимости тут вообще никак ни к селу ни к городу.
какой же ты бестолковый блеать) если бы я здесь написал "спецификаторы доступа" - никто бы не понял... а так все прекрасно поняли, что я имею ввиду, ну кроме одного "цпп-шного гения", который так любит всем что-то втирать и придераться к словам)
struct node{
//свойства
...
//указатель на след звено
node *pNext;
node(){pNext=NULL;//и инициализация других свойств};
~node(){delete pNext;} //цепная реакция
}
(*(node *pHead=new(node)).pNext=new(node);
delete pHead;
Если посмотреть на деструктор, то можно понять принцип. Пример туповат, но все же, надеюсь, ответил на вопрос.
Да и вообще странный вопрос.
Кстати, в чём?
Да, и какие это такие особенности с нахождением "указателя на vtable"?
class foo { int goo; } - goo - private
А уж именно области видимости тут вообще никак ни к селу ни к городу.
кажется срач начинается, кажется срач начинается
диарея!
Надеюсь, по традиции кто-нибудь добрый и большой кинет иллюстрацию))