1. kártya
#include <stdio.h>
int main (void)
{
int a = 5;
int& ar = a; // ar referenciája az a-nak
int& arr = ar; // arr referenciája az ar-nak vagyis az a-nak
++arr;
printf("a=%d\n", a);
return 0;
}
/*
g++
Kimenet:
a=6
*/
2. kártya
#include <iostream>
#include <vector>
int main (int argc, char * argv[])
{
std::vector <char> v(3); // 3 elemű vektort létrehozésa
v[0] = v[1] = v[2] = 'a'; // vektor elemeinek értéke 'a'
std::cout << v[1] << std::endl; // vektor elemének kiírása
return 0;
}
/*
g++
Kimenet:
a
*/
int main (int argc, char *argv[])
{
Verem v (512);
v.push('0');
v.push('1');
std::cout << v[1] << std::endl;
std::cout << v[0] << std::endl;
return 0;
}
/*
Nem merta v egy veremosztályból származtatjuk melynek nincs ilyen funkciója
*/
3. kártya
int main (int argc, char *argv[])
{
Verem v (512);
v.push('0');
v.push('1');
std::cout << v[1] << std::endl;
std::cout << v[0] << std::endl;
return 0;
}
char& operator[] (int i){
return verem[i];
}
/*
Igen, mivel mostmár van függvényünk a címzésre
*/
4. kártya
#include <iostream>
#include <vector>
int* tomb(int meret){ // egy függvény mint létrehozó konstruktor
return new int[meret];
}
int main (int argc, char *argv[])
{
int* t = tomb(10); // létrehozunk ey 10 elemű tömböt
t[6] = 42;
std::cout << t[6] << std::endl;
delete [] t;
return 0;
}
/*
g++
Kimenet:
42
*/
#include <iostream>
#include <vector>
int* tomb(int meret){ // egy függvény mint létrehozó konstruktor
int* t = new int[meret];
return t;
}
int main (int argc, char *argv[])
{
int* t = tomb(10); // létrehozunk ey 10 elemű tömböt
t[6] = 42;
std::cout << t[6] << std::endl;
delete [] t;
return 0;
}
/*
g++
Kimenet:
42
*/
5. kártya
#include <iostream>
#include <vector>
int* tomb(int meret){
int* t1 = new int[meret];
int* t2 = new int[meret];
return t2;
}
int main (int argc, char *argv[])
{
int* t = tomb(10);
t[6] = 42;
std::cout << t[6] << std::endl;
delete [] t;
return 0;
}
/*
t1 a függvényben felesleges, másrészről hibás is! Lefogaljuk a helyet de nem szabadítjuk fel!
*/
#include <iostream>
#include <vector>
int* tomb(int meret){
int* t = new int[meret];
return new int[meret];
}
int main (int argc, char *argv[])
{
int* t = tomb(10);
t[6] = 42;
std::cout << t[6] << std::endl;
delete [] t;
return 0;
}
/*
A t-vel fölöslegesen foglalunk le helyet és még hibát is hordz mivel a lefoglalt helyet nem szabadítjuk fel!
Különbség a return-nál feledezhető fel mivel az elsőben a t2-nél példányosítunk majd úgy adjuk át, míg a másodikban nincs példányosítás.
*/