cw 5 prze naz fun

background image

Programowanie proceduralne

Ćwiczenie 5

Przeładowanie nazwy funkcji

Łukasz Sztangret
Katedra Informatyki Stosowanej i Modelowania

background image

Przeładownie nazwy funkcji polega na
tym, że w danym zakresie ważności
jest więcej niż jedna funkcja o takiej
samej nazwie. To, która z nich zostaje
w danym przypadku uaktywniona,

w danym przypadku uaktywniona,
zależy od liczby i typu argumentów
wywołania jej.

1

1

Grębosz J., „Symfonia C++ standard”

background image

Różne typy argumentów

#include<iostream>
using namespace std;

void napis(int a){cout<<"int\n";}
void napis(double a){cout<<"double\n";}
void napis(char a){cout<<"char\n";}

void napis(char a){cout<<"char\n";}
int main()
{

napis(1);
napis(1.5);
napis('a');
napis(int (1.5));
system("pause");
return 0;

}

background image

Różna liczba argunemtów

#include<iostream>
using namespace std;
void napis(int a){cout<<"1 x int\n";}
void napis(int a,int b){cout<<"2 x int\n";}
void napis(int a,int b,int c){cout<<"3 x int\n";}

void napis(int a,int b,int c){cout<<"3 x int\n";}
int main()
{

napis(1);
napis(1,2);
napis(1,2,3);
system("pause");
return 0;

}

background image

Różne typy funkcji – BŁĄD

#include<iostream>
using namespace std;
int zwroc(double a){return int(a);}
double zwroc(double a){return a;}
int main()

int main()
{

int a=zwroc(1.5);
double b=zwroc(1.5);
system("pause");
return 0;

}

background image

Różna kolejność argumentów

#include<iostream>
using namespace std;

void napis(int a, double b){cout<<"int, double\n";}
void napis(double b, int a){cout<<"double, int\n";}
int main()

int main()
{

napis(1,1.5);
napis(1.5,1);
system("pause");
return 0;

}

background image

Argumenty domniemane – BŁĄD

#include<iostream>
using namespace std;

void napis(int a){cout<<"int\n";}
void napis(int a, double b=0){cout<<"int, double\n";}
int main()
{

{

napis(1);
napis(1,1.5);
system("pause");
return 0;

}

background image

typedef – BŁĄD

#include<iostream>
using namespace std;

typedef int calkowity;

void napis(int a){cout<<"int\n";}

void napis(int a){cout<<"int\n";}
void napis(calkowity a){cout<<"calkowity\n";}
int main()
{

int a=1;
calkowity b=1;
napis(a);
napis(b);
system("pause");
return 0;

}

background image

enum

#include<iostream>
using namespace std;

enum litera {a=1,b,c,d};

void napis(int a){cout<<"int\n";}

void napis(int a){cout<<"int\n";}
void napis(litera l){cout<<"litera\n";}
int main()
{

litera l=a;
int i=1;
napis(l);
napis(i);
system("pause");
return 0;

}

background image

Tablica i wskaźnik – BŁĄD

#include<iostream>
using namespace std;

void napis(int a[]){cout<<"tablica\n";}
void napis(int *a){cout<<"wkaznik\n";}

void napis(int *a){cout<<"wkaznik\n";}
int main()
{

int tab[]={1,2,3};
napis(tab);
system("pause");
return 0;

}

background image

Tablice wielowymiarowe

#include<iostream>
using namespace std;

void napis(int a[2][3]){cout<<"tablica 2x3\n";}
void napis(int a[3][4]){cout<<"tablica 3x4\n";}
int main()

int main()
{

int tab1[2][3]={1,2,3,4,5,6};
int tab2[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
napis(tab1);
napis(tab2);
system("pause");
return 0;

}

background image

Tablice wielowymiarowe – BŁĄD

#include<iostream>
using namespace std;

void napis(int a[2][3]){cout<<"tablica 2x3\n";}
void napis(int a[3][3]){cout<<"tablica 3x3\n";}
int main()

int main()
{

int tab1[2][3]={1,2,3,4,5,6};
int tab2[3][3]={1,2,3,4,5,6,7,8,9};
napis(tab1);
napis(tab2);
system("pause");
return 0;

}

background image

Referencja – BŁĄD

#include<iostream>
using namespace std;
void napis(int a){cout<<"wartosc\n";}
void napis(int &a){cout<<"referencja\n";}
int main()

int main()
{

int a=1;
napis(a);
system("pause");
return 0;

}

background image

Typy: T, const T, volatile T – BŁĄD

#include<iostream>
using namespace std;

void napis(int a){cout<<"int\n";}
void napis(const int a){cout<<"const int\n";}
void napis(volatile int a){cout<<"volatile int\n";}

void napis(volatile int a){cout<<"volatile int\n";}
int main()
{

int a=1;
napis(a);
system("pause");
return 0;

}

background image

Typy: T*, const T*, volatile T*

#include<iostream>
using namespace std;
void napis(int *a){cout<<"int*\n";}
void napis(const int *a){cout<<"const int*\n";}
void napis(volatile int *a){cout<<"volatile int*\n";}
int main()

int main()
{

int a=1;
const int b=2;
volatile int c=3;
napis(&a);
napis(&b);
napis(&c);
system("pause");
return 0;

}

background image

Typy: T&, const T&, volatile T&

#include<iostream>
using namespace std;
void napis(int &a){cout<<"int&\n";}
void napis(const int &a){cout<<"const int&\n";}
void napis(volatile int &a){cout<<"volatile int&\n";}
int main()
{

{

int a=1;
const int b=2;
volatile int c=3;
napis(a);
napis(b);
napis(c);
napis(1);
system("pause");
return 0;

}

background image

Wskaźnik do przeładowanej funkcji

#include<iostream>
using namespace std;
void napis(int a){cout<<"int\n";}
void napis(double a){cout<<"double\n";}
void napis(char a){cout<<"char\n";}
int main()
{

{

void (*wsk1)(int)=napis;
void (*wsk2)(double)=napis;
void (*wsk3)(char)=napis;
wsk1(1);
wsk2(1.5);
wsk3('a');
system("pause");
return 0;

}

background image

Wskaźnik do przeładowanej funkcji

#include<iostream>
using namespace std;
void napis(int a){cout<<"int\n";}
void napis(void (*wsk)(int))
{cout<<"void (*wsk)(int)\n";wsk(1);}

{cout<<"void (*wsk)(int)\n";wsk(1);}
int main()
{

napis(napis);
system("pause");
return 0;

}

background image

Wskaźnik do przeładowanej funkcji

#include<iostream>
using namespace std;
void napis(int a){cout<<"int\n";}
void napis(double a){cout<<"double\n";}
void wywolaj1(void (*wsk)(int))
{cout<<"void (*wsk)(int)\n";funkcja(1);}

{cout<<"void (*wsk)(int)\n";funkcja(1);}
void wywolaj2(void (*wsk)(double))
{cout<<"void (*wsk)(double)\n";funkcja(1.5);}
int main()
{

wywolaj1(napis);
wywolaj2(napis);
system("pause");
return 0;

}

background image

Wskaźnik do przeładowanej funkcji

#include<iostream>
using namespace std;
void napis(int a){cout<<"int\n";}
void napis(double a){cout<<"double\n";}
void (*zwroc(void))(int)

void (*zwroc(void))(int)
{return napis;}
int main()
{

void (*wsk)(int)=zwroc();
wsk(1);
system("pause");
return 0;

}


Wyszukiwarka

Podobne podstrony:
ćw 4 Profil podłużny cieku
biofiza cw 31
Kinezyterapia ćw synergistyczne
Cw 1 ! komorki
Pedagogika ćw Dydaktyka
Cw 3 patologie wybrane aspekty
Cw 7 IMMUNOLOGIA TRANSPLANTACYJNA
Cw Ancyl strong
Cw 1 Zdrowie i choroba 2009
Rehabilitacja medyczna prezentacja ćw I
ćw 2b
Ćw 3 Elektorforeza Bzducha

więcej podobnych podstron