Skip to content

Commit 5edf2bb

Browse files
authored
Update cpp_inst01.md (#138)
1 parent d022107 commit 5edf2bb

1 file changed

Lines changed: 8 additions & 13 deletions

File tree

cpp_inst01.md

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ author: J. Gałecki
1010
### Współczesny C++
1111
Niniejszy tekst rozpoczyna cykl instrukcji stanowiących kurs wprowadzający do języka C++.
1212
Język ten, pomimo swojego dojrzałego wieku, wciąż bardzo dynamicznie się rozwija.
13-
W chwili pisania tej instrukcji, jego najnowszą odsłonę stanowi niedawno zatwierdzony standard C\+\+20.
14-
Komitet ISO, który go wydaje, pracuje obecnie w trzyletnim cyklu; dotychczasowe wydania standardu to C\+\+98, C\+\+03, C\+\+11, C\+\+14, C\+\+17 i C\+\+20 (następna planowana wersja to C++23).
13+
W chwili pisania tej instrukcji, jego najnowszą odsłonę stanowi niedawno zatwierdzony standard C\+\+23.
14+
Komitet ISO, który go wydaje, pracuje obecnie w trzyletnim cyklu; dotychczasowe wydania standardu to C\+\+98, C\+\+03, C\+\+11, C\+\+14, C\+\+17, C\+\+20 i C\+\+23 (następna planowana wersja to C++26).
1515
Wspominamy o tym, gdyż dobrze napisany kod w ww. języku wygląda dziś znacząco inaczej, niż kilkanaście lat temu.
1616
W czasie trwania zajęć postaramy się przedstawić czytelnikowi możliwie jak najbardziej współczesne elementy języka oraz schematy programowania.
1717
Postaramy się zaznaczać, w którym standardzie pojawił się dany element i dlaczego wyparł on ten wcześniej używany (lub jaką lukę wypełnia).
@@ -110,10 +110,10 @@ Takie struktury były już dostępne w C.
110110
W C\+\+ klasy mogą mieć także metody:
111111

112112
```C++
113-
#include <iostream>
113+
#include <print>
114114
struct Human
115115
{
116-
void printAge() { std::cout << age << '\n'; }
116+
void printAge() { std::println("{}", age); }
117117

118118
int age;
119119
double height;
@@ -139,19 +139,19 @@ Klasa może mieć dowolną liczbę konstruktorów (rozróżnianych typami podawa
139139
Destruktor to metoda wywoływana przy niszczeniu obiektów danej klasy.
140140

141141
```C++
142-
#include <iostream>
142+
#include <print>
143143
struct Human
144144
{
145145
Human(int a, double h, std::string n)
146146
{
147147
age = a;
148148
height = h;
149149
name = n;
150-
std::cout << "Hello, " << name << "!\n";
150+
std::println("Hello, {}!", name);
151151
}
152152
~Human()
153153
{
154-
std::cout << "Goodbye, " << name << "...\n";
154+
std::print("Goodbye, {}...", name);
155155
}
156156

157157
int age;
@@ -263,7 +263,7 @@ private:
263263
#### Zadanie 4
264264
Dodaj do klasy `Wektor2D` metody `setX`, `getX`, `setY` i `getY`, służące do odczytywania i modyfikowania współrzędnych wektora.
265265
Uczyń pola opisujące współrzędne prywatnymi.
266-
Co stanie się, gdy spróbujesz zawołać np. `std::cout << wektor.x;`?
266+
Co stanie się, gdy spróbujesz zawołać np. `std::print("{}", wektor.x)`?
267267

268268
### Przeciążanie operatorów
269269
W języku C++ operatory ([tu znajdziesz ich listę](https://en.cppreference.com/w/cpp/language/operators)) możemy przeciążać tak samo jak wszystkie inne funkcje.
@@ -299,10 +299,6 @@ Więcej na temat szczególnego operatora `=` powiemy na kolejnych zajęciach.
299299
#### Zadanie 5
300300
Przeciąż operatory `+` i `*` tak, aby były zdefiniowane dla klasy `Wektor2D` (zgodnie z tradycyjną algebrą).
301301
302-
#### Zadanie 6
303-
Przeciąż operator `<<` tak, aby można było zawołać `std::cout << wektor;`.
304-
Następnie przeciąż go tak, aby można było zawołać `std::cout << wektor1 << wektor2 /* << ... */ << wektorn`.
305-
306302
### Pola i metody statyczne
307303
Dotychczas definiowaliśmy pola i metody, które operowały na konkretnym obiekcie danej klasy (np. imię jest indywidualną cechą każdego człowieka).
308304
Czasem przydatne mogą być także pola i metody statyczne, czyli zdefiniowane dla całej klasy, nie dla jej poszczególnych instancji.
@@ -359,7 +355,6 @@ Zweryfikuj, czy konwersja współrzędnych z jednego układu współrzędnych na
359355
- Domyślny konstruktor wektora może pozostać publiczny. Punkt (0, 0) pokrywa się w obu układach współrzędnych, nie ma tu dwuznaczności.
360356

361357
## Pytania na koniec
362-
- Czym jest `std::cout` (do jakiej kategorii bytów należy)? Jaki ma scope ("zasięg istnienia")?
363358
- Z jakiego konstruktora klasy `std::string` korzystaliśmy w klasie `Human`?
364359
- Czy klasa może mieć więcej niż 1 destruktor? Dlaczego?
365360
- Na ile sposobów możemy zdefiniować `operator+` dla klasy `Wektor2D`? W razie wątpliwości zajrzyj [tutaj](https://youtu.be/gjFrjNK3Dq4).

0 commit comments

Comments
 (0)