Mrovqa  | 
» 2012-09-24 07:52:36 @yoogi pisałeś w SFMLu? Tam masz chociażby przykład referencji, która nie jest argumentem żadnej funkcji. Z resztą podobnie jest przy cout/cin :P  | 
 | 
ison  | 
» 2012-09-24 15:39:38 Wskaźnik to wskaźnik, zawsze ma 4 bajty 
  |  
 również nieprawda  | 
 | 
Mrovqa  | 
» 2012-09-25 07:49:17 @up jak coś cytujesz, to cytuj całość... | Wskaźnik to wskaźnik, zawsze ma 4 bajty pod systemami 32 bitowymi |  
 Ja bym powiedział, że wielkość wskaźnika raczej zależy od tego, na jaką platformę została skompilowana aplikacja (x86, x86_64 itp). W językach wysokopoziomowych wielkość wskaźnika jest z góry narzucona. Co masz na myśli, mówiąc, że nie zawsze? Kodzenie w asmie? :P  | 
 | 
ison  | 
» 2012-09-25 15:52:20 @up jak coś cytujesz, to cytuj całość...
  |  
 Ta, cytowany fragment akurat wyrwałem z kontekstu ale odnosiłem się do całej wypowiedzi. | Co masz na myśli, mówiąc, że nie zawsze? |  
 Wskaźniki na metody przechowują więcej informacji ;)  | 
 | 
Mrovqa  | 
» 2012-09-25 19:42:44 | Wskaźniki na metody przechowują więcej informacji ;) |  
 Sprawdzałeś? :P Ja się przyznam, że nie (i tak na razie nie mam zbytnio czasu - szkoła... :/), ale Twoja argumentacja - hmm - tak jak wskaźnik void* zapamiętuje tylko adres, a każdy inny wskaźnik "pamięta jeszcze" typ na jaki wskazuje - więcej info. W rzeczywistości okazuje się, że te "dodatkowe informacje" to trzyma tylko kompilator dla siebie. Później (w binarce) te wskaźniki się niczym nie różnią :). Co do wskaźnika na metodę - pewnie masz rację, póki co pewności nie mam, więc dyskutować nt. nie będę - póki co :)  | 
 | 
ison  | 
» 2012-09-25 19:52:52 jak myślisz? ;) a każdy inny wskaźnik "pamięta jeszcze" typ na jaki wskazuje 
  |  
 jak sam napisałeś nie pamięta nic z tego w czasie runtime sprawdź sam #include <cstdio>
  class A { public:     virtual void foo() { }; };
  class B { public:     virtual void foo() { }; };
  class C     : virtual public A     , B { public:     virtual void foo() { }; };
  void foo() { }
  int main() {     printf( "::foo %d\n",( int ) sizeof( & foo ) );     printf( "A::foo %d\n",( int ) sizeof( & A::foo ) );     printf( "C::foo %d\n",( int ) sizeof( & C::foo ) ); }
  na GCC/mingw zapewne dostaniesz 4, 8, 8 pod msvc 4, 4, 12  | 
 | 
Mrovqa  | 
» 2012-09-25 19:58:22 Yyyy... pomyliłeś sobie adres metody ze wskaźnikiem na metodę... btw przy polimorfii wiem, że klasa ma dodatkowe dane :)  | 
 | 
ison  | 
» 2012-09-25 20:06:00 Yyyy... pomyliłeś sobie adres metody ze wskaźnikiem na metodę
  |  
 powtórz kurs o wskaźnikach ;) int main() {     void( C::* ptr )() = & C::foo;     printf( "%d\n",( int ) sizeof( ptr ) ); }
  pasuje?  | 
 | 
| 1 « 2 »  3 |