#8. Описание методов вне класса | Уроки ООП C++

  Рет қаралды 1,304

selfedu

selfedu

3 ай бұрын

Практический курс по C/C++: stepik.org/course/193691/
Телеграм-канал: t.me/java_and_c
Инфо-сайт: proproprogs.ru/cpp_oop
Объявление класса в заголовочном файле, а реализации его методов в отдельном файле модуля.

Пікірлер: 11
@andredru4278
@andredru4278 Ай бұрын
Спасибо. Понравился урок.
@user-bn5cf7uw3x
@user-bn5cf7uw3x 2 ай бұрын
Очень полезный урок. Спасибо большое.
@donlinoleum831
@donlinoleum831 2 ай бұрын
Да, действительно очень полезный урок! Понятно, полезно и просто бомбезно! Спасибо)
@citizenfour2951
@citizenfour2951 2 ай бұрын
Спасибо за урок. Почему включение заголовочного файле в разные .cpp файлы не приведет к ошибке, если не-inline методы есть в .h файле? Ошибки нет, потому что тела одинаковые? Дубликат не будет удален оптимизирующим линкером?
@selfedu_rus
@selfedu_rus 2 ай бұрын
классы образуют свою область видимости и существуют в пределах модуля (их определение), поэтому и получается дублирование
@citizenfour2951
@citizenfour2951 2 ай бұрын
@@selfedu_rus дублирование это не ошибка неоднозначности?
@selfedu_rus
@selfedu_rus 2 ай бұрын
@@citizenfour2951в данном случае нет, т.к. область видимости класса ограничивается текущим модулем
@bioxoid
@bioxoid 2 ай бұрын
5:30 #include class PointND { unsigned total {0}; int *coords {nullptr}; public: PointND() : total(0), coords(nullptr) { } PointND(unsigned sz) : total(sz) { coords = new int[total] {0}; } PointND(int* cr, unsigned len) : PointND(len) { set_coords(cr, len); } PointND(const PointND& other) : PointND(other.coords, other.total) { } const PointND& operator=(const PointND& other); unsigned get_total() { return total; } const int* get_coords() { return coords; } ~PointND() { delete[] coords; } private: void set_coords(int* cr, unsigned len); }; const PointND& PointND::operator=(const PointND& other) { delete[] coords; total = other.total; coords = new int[total]; set_coords(other.coords, total); return *this; } void PointND::set_coords(int* cr, unsigned len) { for(unsigned i = 0; i < total; ++i) coords[i] = (i < len) ? cr[i] : 0; } int main() { PointND pt(5); return 0; }
@OlegMatrosov
@OlegMatrosov 2 ай бұрын
Ну и ну... Неужели кто-то описывает методы прямо в объявлении классов? Да никто так не делает.
@selfedu_rus
@selfedu_rus 2 ай бұрын
простые прописывают (однооператорные)
@OlegMatrosov
@OlegMatrosov 2 ай бұрын
@@selfedu_rus спасибо, кэп.
Watermelon Cat?! 🙀 #cat #cute #kitten
00:56
Stocat
Рет қаралды 36 МЛН
La revancha 😱
00:55
Juan De Dios Pantoja 2
Рет қаралды 62 МЛН
Khóa ly biệt
01:00
Đào Nguyễn Ánh - Hữu Hưng
Рет қаралды 18 МЛН
Homemade Professional Spy Trick To Unlock A Phone 🔍
00:55
Crafty Champions
Рет қаралды 48 МЛН
Kotlin за час. Теория и практика.
1:21:33
alishev
Рет қаралды 211 М.
ЯЗЫК АССЕМБЛЕРА С НУЛЯ | #1 НАЧАЛО
54:43
Полиморфизм на практике
10:42
ExtremeCode
Рет қаралды 178 М.
Изучение Java в одном видео уроке за час!
1:06:58
Гоша Дударь
Рет қаралды 1 МЛН
Добро пожаловать в C++
16:08
Winderton
Рет қаралды 445 М.
Watermelon Cat?! 🙀 #cat #cute #kitten
00:56
Stocat
Рет қаралды 36 МЛН