Przestrzenie nazw i zakres
Część sekcji Programowanie obiektowe ścieżki C++ w Coddy. Lekcja 4 z 104.
Przestrzenie nazw grupują powiązany kod i zapobiegają konfliktom nazw. Operator rozstrzygania zakresu :: umożliwia dostęp do elementów wewnątrz przestrzeni nazw.
Tworzenie przestrzeni nazw
namespace MathTools {
int add(int a, int b) {
return a + b;
}
}Dostęp za pomocą operatora rozstrzygania zakresu ::
int result = MathTools::add(5, 3); // result = 8Używanie dyrektywy pozwalającej uniknąć wpisywania przestrzeni nazw za każdym razem
using namespace MathTools;
int result = add(5, 3); // To samo co MathTools::add(5, 3)Przestrzeń nazw std
std::cout << "Hello" << std::endl;
// lub
using namespace std;
cout << "Hello" << endl;Przestrzenie nazw porządkują kod i zapobiegają konfliktom nazw. Przestrzeń nazw std zawiera wszystkie elementy biblioteki standardowej C++, takie jak cout, cin, string i endl.
Wyzwanie
ŚredniUtwórz funkcje wewnątrz przestrzeni nazw MathTools:
add(int a, int b): zwraca sumęmultiply(int a, int b): zwraca iloczyn
Zadeklaruj je w pliku MathTools.h i zaimplementuj w pliku MathTools.cpp.
Spróbuj swoich sił
#include <iostream>
#include "MathTools.h"
int main() {
int a, b;
std::cin >> a >> b;
std::cout << "Add: " << MathTools::add(a, b) << std::endl;
std::cout << "Multiply: " << MathTools::multiply(a, b) << std::endl;
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Programowanie obiektowe
1Podstawy programowania obiektowego
Pliki zewnętrzneBudowanie i kompilacja C++Pliki nagłówkowe i pliki źródłowePrzestrzenie nazw i zakresWprowadzenie do programowania obiektowego w C++Klasy a obiektyWskaźnik „this”Metody (funkcje składowe)Atrybuty (składowe danych)Podstawy konstruktorów i destruktorówPowtórzenie – prosty kalkulator4Właściwości klas
Elementy instancji a elementy statyczneGettery i setteryStałe funkcje składoweSłowo kluczowe mutableMetody i zmienne statyczneFunkcje i klasy zaprzyjaźnionePodsumowanie – menedżer konta bankowego7Dziedziczenie
Podstawy dziedziczeniaPoziomy dostępu w dziedziczeniuKolejność wywołań konstruktora i destruktoraNadpisywanie metodFunkcje wirtualne i VTableWielokrotne dziedziczenieDziedziczenie wirtualnePowtórzenie — hierarchia pracowników2Zarządzanie pamięcią
Pamięć stosu a stertyWskaźniki i referencjePamięć dynamiczna (new/delete)Inteligentne wskaźniki w C++RAII w C++Podsumowanie — menedżer tablicy dynamicznej5Hermetyzacja
Specyfikatory dostępu w C++Specyfikatory dostępu — szczegółowoUkrywanie informacjiStruktura a klasaKlasy zagnieżdżone i wewnętrznePodsumowanie — system ewidencji studentów8Polimorfizm
Polimorfizm czasu kompilacji i wykonaniaPrzeciążanie funkcjiFunkcje wirtualne — powtórkaCzysto wirtualne funkcjeKlasy abstrakcyjneProjektowanie interfejsów w C++Rzutowanie dynamiczne i RTTIPodsumowanie — kalkulator kształtów3Konstruktory i destruktory
Konstruktor domyślnyKonstruktor z parametramiKonstruktor kopiującyKonstruktor przenoszącyListy inicjalizacyjne konstruktoraKonstruktory delegująceDestruktor — szczegółowe omówienieZasada trzech / pięciu / zeraPodsumowanie — klasa String6Przeciążanie operatorów
Wprowadzenie do przeciążania operatorówPrzeciążanie operatorów arytmetycznychPrzeciążanie operatorów porównaniaOperatory strumieniowePrzeciążanie operatora przypisaniaPrzeciążanie operatorów [] i ()Operatory konwersji typówPodsumowanie — klasa Matrix9Szablony
Szablony funkcjiSzablony klasSpecjalizacja szablonówSzablony wariadycznePodstawy SFINAE i cech typówPodsumowanie — kontener generycznyPoćwicz samodzielnie: Kompilator C++ online