Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[C++ Bug] пишу как планировал :-))) 27.07.01 02:02 Число просмотров: 839
Автор: kabanchik Статус: Незарегистрированный пользователь Отредактировано 27.07.01 02:09 Количество правок: 1
|
> > в дополнение - конструктор кроме всего прочего еще и > > создает таблицу виртуальных ф-ий, который потом > разрушается > > деструктором. вот я и разрушил таблицу, а потом > создал, но > нихрена ты не разрушил, а потом и не создал. Таблица > определена в процессе компиляции. Объект класса содержит > только ссылку (указатель) на нее. МОЛОДЕЦ !!!! УМНИК !!!!! сам же подсказал !!!! а я пытаюсь объяснить :
вот поэтому и указатель для наглядности всучил. значение указателя на vtabду ведь менятся должно !!!!!
теперь рассмотрим еще пример.
=================
#include <stdlib.h>
class Parrent
{
public:
Parrent()
{ WhoIs();}
virtual ~Parrent()
{ ;}
public:
virtual void WhoIs()
{ printf("this is Parrent.\n");}
};
class Child
{
pblic:
Child()
{ WhoIs();}
virtual ~Child()
{ ;}
public:
virtual void WhoIs()
{ printf("This is Child.\n");}
};
int main()
{
Child child;
return 0;
}
---
вот результат :
This is Parrent.
This is Child.
так меняется указатель или нет?
вот еще интерестный пример, на примере первого (бля, вы из меня великого тестера сделаете :-))) )
==============
#include <sdtlib.h>
#include <new.h>
class Parrent
{
public:
Parrent() { ;}
virtual ~Parrent() { ;}
};
class Child
{
public:
Child() { ;}
virtual ~Child() { ;}
public:
virtual void BadChoice()
{ printf("I'm able to be called.\n");}
public:
void Magic()
{ this->~Child(); new(this)Parrent;}
};
int main()
{
Child child;
Child* pChild = &child;
chhild.Magic();
child.BadChoice();
pChild->BadChoice();
return 0;
}
---
думаю догодался какой результат, если нет, то прогони.
ну так что, меняется или нет? точнее должен менятся или нет?
и что по твоему это так и должно быть? ты можешь с уверенностью сказать, что *pChild это есть тот же самый объект, что child?
попробуй еще вот так (*pChild).BadChoice(), а в начальном примере - (*pChild).PrintMsg();
> > > тот же "Страуструп" :-))) > ... > > надеюсь теперь по-русски :-))))) > а вот Бьярна не трогай, мой тебе совет - плевать в колодец > не по-русски.
мля, ну что за характер у тебя, советчик хренов ?????!!!!!!!!
как тебя вообще дома терпят??? небось выгоняли по сотню раз :-)))
тебя никто занудой не называл? типичный конфликтный характер
с чего ты взял, что я на Страуструпа наехал??? ты вообще думаешь что говоришь или у тебя все инстиктивно получается???
когда ты перестанешь лаятся со всеми? ну поняли что ты не дурак, только на хрена пальцы веером ?
relax ;-)
hushshshsh, we are not alone on this forum ;-)
|
|
|