1/68
Name | Mastery | Learn | Test | Matching | Spaced | Call with Kai |
|---|
No analytics yet
Send a link to your students to track their progress
Literal constant, variables
Nekintami kintamijei, kuriem verte priskiriama tiesiogiai
int x = 10, const double
const
kvalifikatorius naudojamas nekintamiem kintamiesiems. Verte negali but pakeista po pradinio priskytimo
Rodykles (Pointer)
kintamieji, saugantys kitu kintamuju adresus.
int n = 5, const int* p1 = &n
Nuorodos (References)
Alternatyvus kintamuju vardai, leidziantys manipuliuoti kintamaisiais netiesiogiai
void tipas
funkcija negrazina reiksmes arba rodykle neturi tipo
masyvai
duomenu strukturos saugancios fiksuoto dydzio elementu sekas.
int arr[5] = {1,2,3,4,5}
enumeratoriai
leidzia apibrezti simbolinius vardus sveikom reiksmem
enum Day {monday, tuesday}
day today = monday
typedef
naudojamas sukurti naujus vardus esamiem tipam
globalus kintamieji ir funkcijos
apibreziami uz bet kokios funkcijos ribu, gali but pasiekiami bet kurioje programos vietoje
lokalus kintamieji
apibreziami funkcijos viduje, gali but naudojami tik tose funckijose
dinamine atmintis
valdoma naudojant new ir delete operatorius
int* p = new int
namespace
naudojamas grupuoti vardus kad isvengti konfliktu
namespace MyNamespace{
int x = 10; }
int y = MyNamespace::x;
Funkciju prototipai
nurodo funkciju parasus ir leidzia jas naudoti pries apibrezima
Argumentu perdavimas
i funkcijas pagal verte ar nuoroda
void byValue(int x) { x = 10; }
(Reiksmiu grazinimas)
Funkcijos gali
grazinti reiksmes
int add(int a, int b) {
return a + b; }
Inline funkcijos
mazos funkcijos kuriu kodas iterpiamas tiesiai i skambucio vieta, kad isvengti funkciju iskvietimo kastu
inline int square (int x){
return x * x }
Funkciju perkrovimas
leidzia apibrezti kelias funkcijas tuo paciu vardu, skirtingais parametrais
Funkciju parametrai gali -
tureti numatytas reiksmes
void log(const std::String& message, int level = 1);
Rodykles i funkcijas
leidzia laikyti funkciju adresus ir kviesti funkcijas per rodykles
void (&funcPtr)(int);
funcPtr = myFunction;
Sablonines funkcijos
leidzia kurti bendro pobudzio funkcijas, veikiancias su skirtingais tipais
template<typename T>
T add(T a, T b){
return a + b; }
Duomenu strukturos
padeda organizuoti ir valdyti duomenis
Priesprocesoriaus direktyvos
apdorojamos pries kompiliacija, gali apibrezti makrokomandas, itraukti antrastinius failus, atlikti salygini kompiliavima
Objektas
pagrindinis objektinio programavimo vienetas, turintis busena (duomenys) ir elgesi (metodus)
Klase
objekto sablonas, apibreziantis duomenu struktura ir metodus, kuriuos galima taikyti
Kintamuju paslepimas
objekto vidiniai duomenys paslepti nuo isorinio pasaulio, prieinami tik per viesus metodus
Klases duomenu ir metodu prieigos zonos
public : prieinami visur
protected: prieinami klaseje ir paveldetojuose
private: prieinami tik klaseje
Klases konstruktorius
specialus metodas, kvieciamas kuriant objekto egezmplioriu. Gali but perkrautas. Inicializuoja objekto kintamuosius.
Kopijos konstruktorius
naudojamas sukurti nauja objekta, kuris yra egzistuojancio objekto kopija.
public:
Rectangle(const Rectangle &rect);
Klases destruktorius
specialus metodas, kvieciamas objekto sunaikinimo metu, kad atlaisvintu isteklius
public: ~ Rectangle();
Rectangle::~Rectangle(){
}
Statiniai kintamieji
bendri kintamieji visiems klases egzemplioriams
static int count;
Statiniai metodai
gali buti kvieciami be objekto sukurimo
static void setCount(int c) {count = c; }
const klasese ir objektuose
gali buti naudojamas kad nurodytu ar kintamasis/metodas nekeis objekto busenos
int getValue() const {return value; }
Objektu masyvai
leidzia laikyti kelis tos pacios klases egzempliorius
Rectangle rects[10];
vector<Rectangle> rectVector;
Objektu perdavimas i funkcijas
gali buti perduodami i funkcijas ir grazinami pagal ju verte/nuoroda
Rectangle rect;
return rect;
Draugiskos funkcijos
turi prieiga prie klases privaciu ir apsaugotu nariu
class Rectangle {
friend void print(Rectangle &rect} }
Rodykliu i operatoriu naudojimas
leidzia dinamiskai valdyti objektus ir naudoti ju adresus
Rectangle *rectPtr = new Rectangle(5,5);
Rodykle this
nurodo i klases egzemplioriu ir gali buti naudojama norint pasiekti klases narius
thisā width = width;
thisā height = height;
Nuorodos i objektus
leidzia perduoti objektus i funkcijas be kopijavimo
void printArea(Rectangle &rect){
cout Ā« rect.area() Ā« endl;
Klasiu sablonai
leidzia kurti bendro pobudzio klases, kurios gali veikti su skirtingais duomenu tipais
template <typename T>
class Box{
T value }
Unariniu operaciju perkrovimas
leidzia apibrezti, kaip operatoriai (+, -, ++, ā) veikia vartotojo objektuose. Dirba su vienu argumentu.
void operator++() { ++count; }
Binariniu operaciju perkrovimas
leidzia apibrezti kaip operatoriai (+, -, / ) veikia vartotojo objektuose. Dirba su dviem argumentais.
Complex operator+(const Complex &c)
Draugisku klasei funkciju naudojimas operatoriuose
Globalus operatoriai gali but apibrezti kaip draugiskos funkcijos, kad galetu prieiti prie privaciu ir apsaugotu klases nariu
friendĀ ComplexĀ operator+(constĀ Complex &,Ā constĀ Complex &);
static_cast
naudojamas saugiai konvertuoti viena tipa i kita
float f = 3.14
int a = static_cast<int>(f)
Paveldimumas
leidzia kurti naujas klases, pagristas esamomis klasemis, perimant ju savybes ir metodus
Paveldimi konstruktoriai
leidzia paveldetom klasem naudoti bazines klases konstruktorius
Paveldimi destruktoriai
paveldimose klasese automatiskai kvieciami, kai objektas sunaikinamas
Paveldetu klasiu perkrovimas
gali perrasyti bazines klases metodus, kad pateiktu specifini funkcionaluma
Baziniu klasiu rodykles
gali rodyti i paveldetos klases objektus
base *b;
Derived d;
b = &d;
bādisplay();
Daugybinis paveldimumas
c++ leidzia paveldeti is daugiau nei vienos bazines klases
class C : public A, public B
protected duomenu ir metodu prieigos zona
nariai, prieinami paveldetose klasese, bet ne is isores
Polimorfizmas
leidzia naudoti ta pati sasajos tipa skirtingiems objektas. Pasiekiama per paveldejima ir virtualius metodus.
Virtualus destruktorius
uztikrina kad teisingi destruktoriai butu iskveisti, kai objektai sunaikinami per bazines klases rodykle
Abstrakcios klases
turi bent viena virtualu metoda ir negali buti instancijuojamos tiesiogiai. Naudojamos kaip bazes konkreciom klasem.
Sasajos klases
apibrezia tik grynai virtualius metodus, kuriuos turi igyvendinti konkrecios klases.
virtual void method1() = 0;
void method1() override
Baziniu klasiu rodykles polimorfiniu budu
gali pasiekti paveldetas klases ir kviesti virtualius metodus
shapes[i] ā draw();
Standartine biblioteka STL (Standard Template Library)
teikia konteineriu tipus, kurie leidzia efektyviai saugoti ir valdyti duomenys. Dazniausi konteineriai - vector, set, map, queue, deque
Vektoriai
dinamisko dydzio masyvai, leidziantys greitai pasiekti elementus per indeksus, efektyviai prideti/pasalinti elementus is galo
a.push_back(6);
apop_back();
Sarasai (list)
dvipusio rysio, leidzia efektyviai prideti/pasalinti elementus bet kurioje pozicijoje
a.push_back(6)
a.push_front(0)
Desiniosios eiles (deque)
leidzia greitai prideti/pasalinti elementus is abieju galu
a.push_back(6)
a.push_front(0)
Rinkiniai (set)
unikaliu elementu kolekcijos, kurios tvarko elementus tam tikra tvarka
a.insert(6)
a.erase(3)
Zemelapiai (map)
raktu ir reiksmiu poru kolekcijos, leidziancios greitai paisekti reiksmes pagal raktus
a[1] = āoneā
a[2] = ātwoā
string value = a[1]
Iteratoriai
leidzia pereiti per konteineriu elementus nenaudojant indeksu
for( vector<int>iterator it = vec.begin(); it ! = vec.end(); ++ it)
Transformavimas (transform)
vector<int> = {1,2,3,4,5};
vector<int> result (vec.size());
transform(vec.begin(), vec.end(), result.begin(), [](int x) {return x * x; } );
Lambda israiskos
leidzia kurti anonimiskas funkcijas vietoje.
autoĀ add = [](intĀ a,Ā intĀ b) ->Ā intĀ {Ā returnĀ a + b; }; std::cout <<Ā add(3,Ā 4) << std::endl;
Isimtys
leidzia tvarkyti klaidas ir uztikrina kad programa nepasibaigtu avariskai
throw, try, catch
Postinkrementas
a++, pirmiausia naudojama reiskme, tada ji padidinama
Preinkrementas
++a, pirmiausia reiksme padidinama tada naudojama
Konstruktoriaus savybes
negrazina jokios reiksmes
nenurodomas kaip funkcijos tipas
nepaveldimas
negali buti apibreztas modifikatoriu (const, virtual, static)
jei neapibreztas, kuriant objekta, vykdomas pagal nutylejima
Destruktoriaus savybes
pavadinimas ~klases_pavadinimas
negrazina jokios reiksmes
neturi argumentu saraso
nepaveldimas
negali buti apibreztas modifikatoriu (const,virtual,static)