Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Переполнение стека при инициализации

73K
04 апреля 2013 года
CodNetVis
1 / / 05.08.2011
Код:
class A
{
 long *p;
public:
 A():p(NULL)
 {
 };
 A(A& p):p(p)
 {
 };
 template<class T>A(T val):p(val)// 1
 {
 };
 operator long*()
 {
  return p;
 };
};

class B
{
 virtual void f(void)// 2
 {
 };
};

class C:public A,public B
{
};

void main()
{
 C c;

/*
 Ошибка
 
 Если // 1 и // 2
  warning C4717: 'C::C' : recursive on all control paths, function will cause runtime stack overflow
*/

 A a=c;
 
/*
 Правильно
*/

 A a;
 a=c;

};
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог