mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-04-21 21:51:22 +02:00
Mention null terminator in alapok.
This commit is contained in:
parent
703e326322
commit
8097fff01c
@ -8,6 +8,7 @@ rev 7: Rect2 is_equal_approx paraméter típus kijavítva.
|
||||
rev 8: Rect2 grow, shrink visszatérési érték javítva (Már nincs).
|
||||
rev 9: intersects_include_borders typo javítva.
|
||||
rev 10: IntVectorba pop_back metódus hozzáadva.
|
||||
rev 11: String: c_str + nul terminator megjegyzés hozzáadva.
|
||||
|
||||
1. Implementáld az alábbi 2ds matematikai vektor osztályt:
|
||||
|
||||
@ -287,6 +288,25 @@ int main() {
|
||||
sub_str(int from, int num = -1), c_str(), operator==, operator!=, operator=, operator+=, operator+, remove(str : String),
|
||||
print(), format(), etc.
|
||||
|
||||
Megj: Ha implementáljátok a c_str() függvényt: Ez egy c/c++ on tömböt ad vissza (char *), és nyilván már tudjátok,
|
||||
hogy egy ilyen tömbnek nem lehet megmondani a méretét. A trükk az, hogy ezek a c stringek nul termináltak.
|
||||
Azaz az utolsó karakterük a 0 kontroll karaktert tartalmazza! Kódban: '\0' azza a 0. ASCII karakter.
|
||||
|
||||
Például, hogy egy ilyen char* es konstruktort szeretnétek csinálni, az valahogy így fog kinézni:
|
||||
|
||||
String::String(const char *p_c_str) {
|
||||
_data = nullptr;
|
||||
_actual_size = 0;
|
||||
_size = 0;
|
||||
_grow_by = 100;
|
||||
|
||||
int i = 0;
|
||||
while (p_c_str[i] != '\0') {
|
||||
push_back(p_c_str[i]);
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
8. Az előző feladatokban sok helyen meg lehet jelölni paramétereket konstansként, illetve pl. konstans referenciává lehet alakítani őket.
|
||||
Menj végig az előző osztályokon, és mindenhol, ahol van értelme, ezeket add hozzá.
|
||||
(int-eket/float okat csak konstanssá érdemes átrakni, referenciává tenni őket nincs értelme!)
|
||||
|
Loading…
Reference in New Issue
Block a user