Russian Qt Forum

Программирование => С/C++ => Тема начата: CuteBunny от Август 28, 2012, 14:34



Название: wtf is *this?
Отправлено: CuteBunny от Август 28, 2012, 14:34
Привет, всем!

Есть код:
Код
C++ (Qt)
#include <iostream>
 
class A {
public:
      void f();
};
 
void A::f()
{std::cout << "wtf?!\n";}
 
int main()
{
    A *a;
    a->f();     //?
}
 

Почему в данном случае, ничего криминального нету в том, что a - у нас неинициализированная локальная переменная и более того мы вызываем метод f()? На msvc2010 в релизе собирается, запускается, проверил еще и в ideone.com.


Название: Re: wtf is *this?
Отправлено: Igors от Август 28, 2012, 14:38
MSVC (во всяком случае 2008) варнингов сыпет много, но не тех что надо. Порядочный компилятор (icc/gcc) скажет типа "used before been initialized"


Название: Re: wtf is *this?
Отправлено: mutineer от Август 28, 2012, 14:40
А что криминального должно случиться? Метод к данным объекта не обращается, выполняясь независимо от this, значит ему без разницы чему этот самый this равен


Название: Re: wtf is *this?
Отправлено: CuteBunny от Август 28, 2012, 14:41
MSVC (во всяком случае 2008) варнингов сыпет много, но не тех что надо. Порядочный компилятор (icc/gcc) скажет типа "used before been initialized"

Да у меня даже debug не собрался, вылетело с assert'ом... А в релизе все ок...

http://ideone.com/Q54sP (http://ideone.com/Q54sP) - вот из ideone.com на g++


Название: Re: wtf is *this?
Отправлено: CuteBunny от Август 28, 2012, 14:43
А что криминального должно случиться? Метод к данным объекта не обращается, выполняясь независимо от this, значит ему без разницы чему этот самый this равен

Все понятно, тогда, спасибо!:) Я понял:)


Название: Re: wtf is *this?
Отправлено: kambala от Август 28, 2012, 16:01
студия вообще много чего кушает и не давится в отличие от gcc или clang например


Название: Re: wtf is *this?
Отправлено: andrew.k от Август 28, 2012, 16:33
а какое слово маскирует звездочка в сабже? :)


Название: Re: wtf is *this?
Отправлено: ecspertiza от Август 28, 2012, 17:28
попробовал на гцц для интересу http://liveworkspace.org/code/8d4400797f8502f7bc859358838039fa :)