Build e compilazione in C++
Fa parte della sezione Programmazione orientata agli oggetti del percorso C++ di Coddy. Lezione 2 di 104.
C++ si compila in tre fasi: preelaborazione, compilazione e collegamento.
1. Preelaborazione: le direttive #include vengono risolte, copiando il contenuto degli header nei file sorgente
#include <iostream> // Header di sistema
#include "my_file.h" // Il tuo header2. Compilazione: ogni file .cpp viene compilato indipendentemente in un file oggetto (.o)
// math_utils.cpp viene compilato in math_utils.o
// main.cpp viene compilato in main.o3. Collegamento: i file oggetto vengono combinati nell'eseguibile finale
// math_utils.o + main.o → program.exeIl file header dichiara ciò che esiste (prototipi). Il file .cpp fornisce l'implementazione effettiva. Il linker collega le chiamate in main.cpp alle implementazioni in altri file .cpp.
Sfida
MedioIl file header math_utils.h dichiara due funzioni. Implementale in math_utils.cpp:
doubleValue(int x): restituiscex * 2square(int x): restituiscex * x
Assicurati di includere il file header nel tuo file .cpp.
Provalo tu
#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;
}Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Programmazione orientata agli oggetti
1Fondamenti della programmazione orientata agli oggetti
File esterniBuild e compilazione in C++File header e file sorgenteNamespace e ambitoIntroduzione alla programmazione orientata agli oggetti in C++Classi e oggetti a confrontoIl puntatore 'this'Metodi (funzioni membro)Attributi (membri dati)Fondamenti di costruttori e distruttoriRiepilogo - Calcolatrice semplice4Proprietà delle classi
Membri di istanza e staticiGetter e setterFunzioni membro constParola chiave mutableMetodi e variabili staticiFunzioni e classi friendRiepilogo - Gestore di conti bancari7Ereditarietà
Ereditarietà di baseLivelli di accesso nell’ereditarietàOrdine di chiamata di costruttori e distruttoriRidefinizione dei metodiFunzioni virtuali e VTableEreditarietà multiplaEreditarietà virtualeRiepilogo - Gerarchia dei dipendenti2Gestione della memoria
Memoria Stack vs HeapPuntatori e riferimentiMemoria dinamica (new/delete)Puntatori intelligenti in C++RAII in C++Riepilogo - Gestore di array dinamico5Incapsulamento
Specificatori di accesso in C++Specificatori di accesso in dettaglioOccultamento delle informazioniStruct vs classClassi annidate e interneRiepilogo - Sistema di registrazione degli studenti8Polimorfismo
Polimorfismo a compile time e a runtimeOverload delle funzioniFunzioni virtuali: ripassoFunzioni virtuali pureClassi astratteProgettazione delle interfacce in C++Dynamic casting e RTTIRipasso: calcolatrice di forme11Concetti avanzati di OOP
Composizione vs ereditarietàMixin tramite CRTPIdiom PimplType ErasureEnum class e tipizzazione forteGestione delle eccezioni in OOPGerarchie personalizzate di eccezioni14Pattern di progettazione - Parte 2
Pattern CommandPattern AdapterPattern DecoratorPattern Template MethodPattern StatePattern CompositeRAII come pattern3Costruttori e distruttori
Costruttore predefinitoCostruttore con parametriCostruttore di copiaCostruttore di spostamentoListe di inizializzazione dei costruttoriCostruttori delegantiApprofondimento sui distruttoriRegola del Tre / Cinque / ZeroRipasso - classe String6Sovraccarico degli operatori
Introduzione al sovraccarico degli operatoriSovraccarico degli operatori aritmeticiSovraccarico degli operatori di confrontoOperatori di flussoSovraccarico dell'operatore di assegnazioneSovraccarico degli operatori [] e ()Operatori di conversione di tipoRipasso - Classe Matrix9Template
Template di funzioneTemplate di classeSpecializzazione dei templateTemplate variadiciBasi di SFINAE e dei trait di tipoRiepilogo - Contenitore genericoEsercitati da solo: Compilatore C++ online