Forum Informatyka UJ forum Strona Główna Informatyka UJ forum
Rocznik 2005 - czyli najlepsze forum w sieci
 
 FAQFAQ   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy   GalerieGalerie   RejestracjaRejestracja 
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

c++ - szablony
Idź do strony 1, 2  Następny
 
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 3:51, 28 Sty 2007    Temat postu: c++ - szablony

to ja mam taki maly quiz: mamy nastepujacy kod:
Kod:

#include <iostream>

template<typename T>
inline T const &max(T const &a, T const &b) {
    std::cout << "Funkcja szablonowa 0\n";
    return a>b ? a : b;
}

template <typename>
inline char* const &max(char* const& a, char* const& b) {
    std::cout << "Funkcja szablonowa 1\n";
    if (strcmp(a,b)<0) return b;
    else return a;
}

template<>
inline char* const &max(char* const &a, char* const &b) {
    std::cout << "Funkcja specjalizowana 2\n";
    if (strcmp(a,b)<0) return b;
    else return a;
}

template<>
inline char* const &max<char *>(char* const &a, char* const &b) {
    std::cout << "Funkcja specjalizowana 3\n";
    if (strcmp(a,b)<0) return b;
    else return a;
}

template<>
inline char* const &max<const char *>(char* const &a, char* const &b) {
    std::cout << "Funkcja specjalizowana 4\n";
    if (strcmp(a,b)<0) return b;
    else return a;
}

inline char* const &max(char* const &a, char* const &b){
    std::cout << "Funkcja specjalizowana 5\n";
    if (strcmp(a,b)<0) return b;
    else return a;
}

int main()
{
    char a[] = "tekst a";
    char b[] = "tekst b";
    // tutaj nalezy napisac 6 linijek
}



i teraz jest w miescje w miejsce komentarza trzeba wstawic 6 linijek tak zeby wowolac kazda z 6ciu napisanych funkcji. szablon 0 oraz szablon 1, a takze specjalizacje 2-5..
dodam tylko ze szablon 0 i szablon 1 jak rowniez specjalizacje 3-5 bardzo latwo wywolac, ale za to najciekawsze jest wywolanie specjalizacji 2


EDITED: pierwsz osoba ktora poda jak jak wywolac specjaliacje 2 ma odemnie 4-opak (browar do wyboru:))


Ostatnio zmieniony przez mateo dnia Nie 4:33, 28 Sty 2007, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Nie 4:01, 28 Sty 2007    Temat postu:

To moze ja sie jednak wyspie w poniedzialek i poucze analizy, a nie na kampus sie bede bez sensu tlukl...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 4:18, 28 Sty 2007    Temat postu:

A tak poza szablonami to polecam sobei przeanalizowac takie kody:
(przy niektorych sa moja komentarze, ktore sobei pisalem piszac te programy... nie powinny byc trudne w zrozumieniu)

Kod:

#include <stdexcept>
#include <cstdio>


class A
{
public:
    int a, b;
    A() try : a(0), b(1) {
        throw 3;
    } catch (int a) {
        printf("aa\n");
    }
};

int main()
{
    A x;
}



Kod:

#include <stdexcept>
#include <cstdio>

void fun(int a) try {
    //const int a = 2; blad!!!
    const int b = 2;
    throw b;
//} catch(int a)  blad kompilacji!!! nie moze sie nazywac tak samo jak argument formalny funkcji
} catch(int &c) {       // zlapie sie mimo ze b jest const!!!!
    printf("%d\n", a);
    //printf("%d\n", b); // brak dostepu
    printf("%d\n", c);
}

int main()
{
    fun(10);
}



Kod:

template <typename T>
class B;

// ta deklaracja jest konieczna!!! musi byc przed class B ktora deklaruje przyjazn z funkcja szablonowa
template <typename T>
void fun(B<T> &b);

template <typename X>
void g(X a);


template <typename T>
class B
{
public:
    // przyjazn pojedynczej funkcji fun(B<T>&) (nie potrzeba wpisywac tego <T>, ale mozna)
    // konieczne sa <> po nazwie funkcji, jak je pominiemy bedzie warning, a nei blad kompilacji
    friend void fun<>(B&);

    // przyjazn calego szablonu:  nie moze byc <> po fun!!
    template <typename U>
    friend void fun(B<U>&);
    friend void d();
    friend void e() {           // mozna od razu zdefiniowac funkcje friend (jesli ne jest szablonowa)
    }

    // nie mozemy wyspecjalizowac funkcji wewnatrz klasy!!
    //template<>
    //friend g<int>(int a) {}
};

void d() {}     // eklaracja takeij funkcji nie jest wymagana przed klasa B

int main()
{

}


Kod:

template <typename T>
void fun(T a, T b)
{

}

int main()
{
    const int a = 4;
    int b;
    // to zadzaiala , czemu????
    fun(a, b);
    // to nie dziala co juz jets raczej jasne
    fun(&a, &b);
}


Kod:

#include <cstdio>

using namespace std;
//------------------------------------------------------------------------------

static union            // to moze byc tylko static bo ma zasieg calego pliku, albo jakos tak...
{
    public:
    int a;
    float b;
//    int &get_a() {return a;}  // unia aninimowa nie moze miec funkcji skladowych!!
};

union U
{
    float y;
    int g;
};

class D
{
    public:
    union {
        int f, k;
        int h;
        static int w() {return 4;}      // unie moga miec statyczne funkcje
        int q() {return 0;}             // oraz zwykle funkcje
        //static int y;                 // ale ne moga miec statycznych sklasnikow
        // nie moga miec tez zadnych skladnikow w ktorych zdefiniowano operator przypisania badz konstruktor, czy tez destruk$
    }t;         // to juz nie jest unia anonimowa!!! // jak usuniemy 't' to bedzie blad kompilacji wywolany funkcja int w()
};

/******************************************************************************/
int main()
{
    a = 4;
    U w = {2.34};       // mozna tak robic przypisujac jedynie pierwszemu elementowi na liscie
    D e;
    e.t.f = 4;          // teraz mozna sie jedynie tak dostac do f i k w klasie D
    return 0;
}



jakby ktos nie wiedzial to funkcje zaprzyjazniona mozna definiowac wewnatrz klasy i dostep jest do niej spoza klasy - dodatkowo nie ma roznicy czy funkcja zaprzyjazniona jest deklarowana wewnatrz public private czy proteted:
Kod:

#include <cstdio>

class A
{
private:
    int x;
    friend int funkcja(const A &tmp, int a, int b) {
        return a + b + tmp.x;
    }
};

int main()
{
    A x;
    printf("%d\n", funkcja(x, 1, 4));
}


Kod:

#include <cstdio>

// taka inicjalizacja tablicy jest ok - dodatkowo wyzeruje ona wszystkie elementy!!
int a[][4][2][1][4] = {{},{{}},{{{}}},{{{{}}}}};

class abc
{
public:
    void operator = (int) {}
    int operator = (const abc &x) {return 0;}
};

/******************************************************************************/
int main()
{
    abc q, w, e;
    q = w = e;
//    q = w = e = e;    // blad kompilacji
}


Ostatnio zmieniony przez mateo dnia Nie 5:12, 28 Sty 2007, w całości zmieniany 5 razy
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Nie 4:38, 28 Sty 2007    Temat postu:

Cytat:
W przypadku, gdy wśród przeładowanych funkcji pojawiają się również szablony, do ustalenia, która z przeładowanych wersji danej funkcji ma zostać wybrana, stosowane są, w podanej kolejności, następujące reguły

1. ścisła zgodność argumentów z jedną z funkcji specjalizowanych
2. możliwość wygenerowania funkcji o identycznej liście argumentów w oparciu o szablon
3. dopasowanie funkcji specjalizowanej na zasadzie utożsamienia typów (np. int i const int)
4. zgodność argumentów z jedną z funkcji specjalizowanych przy wykorzystaniu konwersji standardowych w zakresie typów całkowitych rozszerzających pojemność typu (n.p. bool na int) oraz konwersja float na double
5. zgodność argumentów z jedną z funkcji specjalizowanych przy wykorzystaniu pozostałych standardowych konwersji (np. int na double, int* na void*)
6. zgodność argumentów z jedną z funkcji specjalizowanych przy wykorzystaniu konwersji zdefiniowanych przez użytkownika

Jeśli okaże się, że dopasowane zostaną dwie lub więcej funkcje na najwyższym poziomie zgodności, sygnalizowany jest błąd niejednoznaczności.

przydatne do tego pierwszego, i moim zdaniem warto wydrukowac na egzamin

a tak przy okazji to nie udalo mi sie wywolac tej funkcji nr 2 ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 4:46, 28 Sty 2007    Temat postu:

no to proboj dalej:)

w kazdym razie wywolac sie da....
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Nie 4:50, 28 Sty 2007    Temat postu:

mateo napisał:
no to proboj dalej:)

w kazdym razie wywolac sie da....

hasnowi juz sie udalo wywalic kompilator na tym :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Nie 5:12, 28 Sty 2007    Temat postu:

Fakt, udalo sie spowodowac wywalenie gcc na segfaulcie. Ale udalo mi sie tez rozwiazac zagadke:

UWAGA! SPOILER!

































Kod:
std::cout << max<>(a,b) << std::endl;
std::cout << max<int>(a,b) << std::endl;
std::cout << ((char* const& (*)(char* const&, char* const&))max<>)(a,b) << std::endl;
std::cout << max<char*>(a,b) << std::endl;
std::cout << max<const char*>(a,b) << std::endl;
std::cout << max(a,b) << std::endl;


A tak podobno wyglada rozwiazanie wzorcowe - nie ukrywajmy ze jest duzo prostsze :P

Kod:
std::cout << max<>(a,b) << std::endl;
std::cout << max<int>(a,b) << std::endl;
std::cout << max<>((char*)a,(char*)b) << std::endl;
std::cout << max<char*>(a,b) << std::endl;
std::cout << max<const char*>(a,b) << std::endl;
std::cout << max(a,b) << std::endl;


Kilkenny, wybieram cie!!!!
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 5:19, 28 Sty 2007    Temat postu:

mowisz masz... :) a tego twojego rozwiazania tez ni chooja nie czaje czemu dziala :)

EDIT: swoja droga fajne to rzutowanie template'a na konkretyzacje, nie wiedzialem ze tak sie da...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Nie 5:27, 28 Sty 2007    Temat postu:

Ja tez :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
r4ku
żul



Dołączył: 09 Lut 2006
Posty: 722
Przeczytał: 0 tematów

Skąd: klikash? :D

PostWysłany: Nie 5:45, 28 Sty 2007    Temat postu:

gdyby te egzaminy byly za 2 tygodnie to bylaby nadzieja... niestety, 30h na programowanie i ok 55h do analizy pozbawia zludzen :(
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Nie 12:00, 28 Sty 2007    Temat postu:

Dlaczego ludzie uwielbiają tak komplikować sobie życie?? ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
pazabo
pijak



Dołączył: 02 Lut 2006
Posty: 60
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Nie 13:49, 28 Sty 2007    Temat postu:

Po tych wszystkich przykładach odnoszę coraz większe wrażenie, że ten język jest z d*** wzięty.. Mam nadzieje, że prof. Mrozek nie da takich przykładów..
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Robson
zielony żul



Dołączył: 21 Paź 2005
Posty: 1274
Przeczytał: 0 tematów

Skąd: Z Lasu :]

PostWysłany: Nie 14:02, 28 Sty 2007    Temat postu:

Cytat:
Po tych wszystkich przykładach odnoszę coraz większe wrażenie, że ten język jest z d*** wzięty.. Mam nadzieje, że prof. Mrozek nie da takich przykładów..

true ... pozostaje nam tylko sen na Javie... ;)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Madras
Omylny Admin



Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów

Skąd: Z Pokoju :]

PostWysłany: Nie 14:14, 28 Sty 2007    Temat postu:

Nieprawda, C++ jest genialne. To perl jest z d*** wzięty.
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Rogal
Zjeb z kaszanką



Dołączył: 13 Mar 2006
Posty: 1745
Przeczytał: 0 tematów

Skąd: koło podbiegunowe

PostWysłany: Nie 14:17, 28 Sty 2007    Temat postu:

Patrząc po tym co było na ostatnich egzaminach to nie ma szans, żeby były przykłady tego typu jakie Wy tutaj rozpatrujecie.

edited: Zwłaszcza, że do każdego z programów z C++ będzie max. po 5 pytań (ja osobiście typuję: Java - 7 pytań, C++ - po 4-5 na każde zadanie, Scheme - 4).


Ostatnio zmieniony przez Rogal dnia Nie 14:19, 28 Sty 2007, w całości zmieniany 1 raz
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Fidel
żul



Dołączył: 19 Lis 2005
Posty: 649
Przeczytał: 0 tematów

Skąd: Kraków

PostWysłany: Nie 14:18, 28 Sty 2007    Temat postu:

Rogal napisał:
Patrząc po tym co było na ostatnich egzaminach to nie ma szans, żeby były przykłady tego typu jakie Wy tutaj rozpatrujecie.
true :)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 15:01, 28 Sty 2007    Temat postu:

no to ze takich pytan, jak w pierwszym poscie w typicu, nie bedzie to chyba nie jest rzecza odkrywcza :P to mialo raczej charakter ciekawostki niz czegos co warto wiedziec przed egzaminem.
natomiast jesli chodzi o pozostale programy ktore wkleilem to niektore rzeczy z tych programow moga sie pojawic na egzaminie (try catch w konstruktorze i to ze wyjatek mimo catcha jest rzucany dalej tez bylo jako ciekawostka..:P) i nie uwazam zeby to byly jakos bardzo wyszukane zagadnienia z c++

podobnie warto wiedziec ze pan Mrozek zrobil 2 bledy w programach dotyczacych obiektow chwilowych (lub ze wczesniejsze kompilatory inaczej dzialaly, ale raczej watpie)

Kod:

#include <iostream>
using namespace std;

int f(int& i){
  return i;
}

int g(){
  return 0;
}

const int h(){
  return 1;
}

int main(){
    // obydwie linie sa zle!!!! a nie tylko pierwsza. bo zwracane sa obiekty chwilowe. musiloby byc f(const int &)
  cout << f(g()) << "\n";
  cout << f(h()) << "\n";
};


w wykladach bylo napisane ze pierwsza linia sie skompiluje co jest nieprawda (przynajmniej w wersji gcc ktora jest na virgo...)
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Pawel Str.
pijak



Dołączył: 06 Lut 2006
Posty: 429
Przeczytał: 0 tematów

Skąd: Ze starszego roku / Z Gorlic

PostWysłany: Nie 15:07, 28 Sty 2007    Temat postu:

Ludzie, nie zajmujecie się trochę za bardzo hardcorowymi zagadnieniami? Popatrzcie sobie spokojnie na te pytania przykładowe - widzicie tam AŻ TAKIE kawałki?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
kap00ch
Mistrz grilla



Dołączył: 09 Mar 2006
Posty: 1840
Przeczytał: 0 tematów

Skąd: ja sie tu wzialem?

PostWysłany: Nie 16:10, 28 Sty 2007    Temat postu:

ja widze ze wam nizle odbija ;p wezcie se moze przeczytajcie egzaminy sprzed 3 , 2 i sprzed roku ;p bo jak sie ksupicie na glupotach to potem bedzie walek w stlu : "a co to jest garbecz kolektor? i gdzie to najpierw bylo ? " :P
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
mateo
pijak



Dołączył: 08 Mar 2006
Posty: 296
Przeczytał: 0 tematów

Skąd: Krk - Biały Prądnik

PostWysłany: Nie 16:33, 28 Sty 2007    Temat postu:

no ja pierdole ale wy kurwa macie problemy. nikt wam nie karze czytac tego topicu przeciez. napisalem ze ten pierwszy gowniany program to jest ciekawostka i po prostu bylem ciekaw czy ktos wapdnie jak go zrobic.

a jak kod w stylu:
Kod:

template <typename T>
void fun(T a, T b)
{

}

int main()
{
    const int a = 4;
    int b;
    // to zadzaiala , czemu????
    fun(a, b);
    // to nie dziala co juz jets raczej jasne
    fun(&a, &b);
}


jest rzeczywiscie jakos strasznie przejebany i na bank nic podobnego na egzaminie sie nei ma prawa pojawic no to sorry... jak dla mnie to takie cos by sie moglo jak najbardziej pojawic. to samo jesli chodzi o pytanie o definiowanie funkjci zaprzyjaznionej wewnatrz klasy itp albo o kolejnosc wywowolywania operatorow przypisania...
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Stefan
pijak



Dołączył: 22 Lis 2005
Posty: 173
Przeczytał: 0 tematów


PostWysłany: Nie 17:45, 28 Sty 2007    Temat postu:

C++ nie jest "z d*** wzięty", tylko jest językiem bardzo rozbudowanym. Ogólne idee są jasne i proste, ale diabeł tkwi w szczegółach. Stąd wiele w nim "trików" i "hakerskich sztuczek", na których można zagiąć każdego - człowieka, który ileś tam lat programuje w C++, prof. Mrozka i pewnie samego Bjarne Stroustrupa. Jest sporo rzeczy "implementation defined", ale i sporo takich, które są zgodne ze standardem, a i tak powodują niezłe zdziwienie: jak choćby problem
Kod:

    rok b = rok(a);

gdy nie ma const w konstruktorze kopiującym klasy rok, czy (o zgrozo!) występujący na pytaniach w niektórych firmach myk:
Kod:

#include <iostream>
using namespace std;

int main()
{
   cout << 2["abc"] << endl;
}

Jest takich rzeczy pełno - niektóre są zaszłościami z C, niektóre są wynikiem wieloparadygmatowości języka C++ - łączenia np programowania obiektowego z generycznym, itp.

Jeśli ktoś chce mieć jasny i przejrzysty język, to niech pisze w (standardowym) Pascalu, choć i tak mało kto wie, że w Pascalu średnik daje się między instrukcjami, a nie po instrukcji. Ale jak się tylko zacznie dodawać do niego klasy, przeładowanie operatorów, itp to wszystko robi się skomplikowane i też pewnie można by wynaleźć pełno kruczków.

Można stać na stanowisku, że istnieje pewien poziom skomplikowania, gdzie programista ma wystarczający zbiór narzędzi, a wszystko to da się objąć. Tylko dlaczego do Javy dodano szablony? A i zapowiada się przeładowanie operatorów w niedalekiej przyszłości... Albo czemu nowy Delphi to taki C++, tyle że z begin i end?
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
jagm
zielony żul



Dołączył: 01 Lut 2006
Posty: 1421
Przeczytał: 0 tematów


PostWysłany: Nie 18:37, 28 Sty 2007    Temat postu:

Stefan napisał:
C++ nie jest "z d*** wzięty"

Słusznie... ja bym tu żadnej dupy nie obrażał...

Stefan napisał:
Stąd wiele w nim "trików" i "hakerskich sztuczek", na których można zagiąć każdego - człowieka, który ileś tam lat programuje w C++, prof. Mrozka i pewnie samego Bjarne Stroustrupa.

a czasem nawet sam kompilator
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Madras
Omylny Admin



Dołączył: 09 Lis 2005
Posty: 2021
Przeczytał: 0 tematów

Skąd: Z Pokoju :]

PostWysłany: Nie 18:52, 28 Sty 2007    Temat postu:

Nie... Pod *** jest emo ;].
Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Yoter
zielony żul



Dołączył: 19 Lis 2005
Posty: 1033
Przeczytał: 0 tematów

Skąd: Gościeradów

PostWysłany: Nie 23:27, 28 Sty 2007    Temat postu:

oki może to i nie są szablony ale też zabawa konstruktorami... pytanie brzmi: czy poniższy kod się skompiluje? jeśli tak to co się pojawi na ekranie, jeśli nie to dlaczego (która linijka to spowoduje)? tylko proszę, nie przeklejajcie tak od razu bezczelnie kodu i nie próbujcie go kompilować tylko najpierw pomyślcie... będziecie mieć większą zabawę ;)

Kod:
#include <cstdlib>
#include <iostream>
using namespace std;

struct a{
a(){cout << '0' << endl;}
a(int i){cout << '1' << endl;}
a(float i){cout << '2' << endl;}
a(float x, float y=0){cout << '3' << endl;}
a(const a& aa){cout << '4' << endl;}
};

int main(){
a aa(aa);
a bb(true["djadh"],false["dsoapd"]);
a cc(true,false);
a dd(.0,.0);
a ee(*"isaj");
a ff(int);
a gg(a);
a hh();
a ii;
system("PAUSE");
}

Powrót do góry
Zobacz profil autora
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
hansu
Nieomylny Admin



Dołączył: 17 Lis 2005
Posty: 1990
Przeczytał: 0 tematów

Skąd: przychodzimy? Czym jestesmy? Dokad zmierzamy?

PostWysłany: Nie 23:48, 28 Sty 2007    Temat postu:

Ktos jest w stanie wytlumaczyc jakim prawem to sie kompiluje? O_o
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Informatyka UJ forum Strona Główna -> Archiwum / 1 rok / 2 i 3 semestr - Programowanie Wszystkie czasy w strefie EET (Europa)
Idź do strony 1, 2  Następny
Strona 1 z 2

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach

fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group
Regulamin