Budowanie i kompilacja C++
Część sekcji Programowanie obiektowe ścieżki C++ w Coddy. Lekcja 2 z 104.
C++ kompiluje się w trzech etapach: przetwarzania wstępnego, kompilacji i linkowania.
1. Przetwarzanie wstępne: dyrektywy #include są przetwarzane, a zawartość plików nagłówkowych kopiowana do plików źródłowych
#include <iostream> // Nagłówek systemowy
#include "my_file.h" // Twój własny nagłówek2. Kompilacja: Każdy plik .cpp jest kompilowany niezależnie do pliku obiektowego (.o)
// math_utils.cpp jest kompilowany do math_utils.o
// main.cpp jest kompilowany do main.o3. Linkowanie: Pliki obiektowe są łączone w końcowy plik wykonywalny
// math_utils.o + main.o → program.exePlik nagłówkowy deklaruje, co istnieje (prototypy). Plik .cpp zawiera właściwą implementację. Konsolidator łączy wywołania w main.cpp z implementacjami w innych plikach .cpp.
Wyzwanie
ŚredniPlik nagłówkowy math_utils.h deklaruje dwie funkcje. Zaimplementuj je w pliku math_utils.cpp:
doubleValue(int x): zwracax * 2square(int x): zwracax * x
Pamiętaj, aby dołączyć plik nagłówkowy w pliku .cpp.
Spróbuj swoich sił
#include <iostream>
#include "math_utils.h"
int main() {
int num;
std::cin >> num;
std::cout << "Double: " << doubleValue(num) << std::endl;
std::cout << "Square: " << square(num) << std::endl;
std::cout << "Build successful" << 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