Moderne C++ standarder
Computerspace · FGU · Programmering i C++
🚀 Hvad er moderne C++ standarder?
C++ har udviklet sig enormt siden C++11. Moderne C++ er sikrere, mere ekspressivt og mere effektivt end klassisk C++.
C++11 – Den moderne æra begynder:
```cpp
// Move semantics – effektiv flytning af ressourcer
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2 = std::move(v1); // v1 er nu tom, v2 har dataene
// Smart pointers
auto p = std::make_unique<int>(42);
// Auto og range-for
auto tal = 42;
for (auto x : v2) { std::cout << x; }
// Lambda
auto square = [](int x) { return x * x; };
```
C++17 – Praktiske tilføjelser:
```cpp
#include <optional>
#include <variant>
#include <filesystem>
// std::optional – værdi der måske ikke eksisterer
std::optional<int> find(std::vector<int>& v, int target) {
for (int x : v) if (x == target) return x;
return std::nullopt;
}
// std::filesystem – filsystem-operationer
namespace fs = std::filesystem;
for (auto& entry : fs::directory_iterator(".")) {
std::cout << entry.path() << std::endl;
}
// if constexpr – compile-time betingelse
template<typename T>
void print(T val) {
if constexpr (std::is_integral_v<T>) {
std::cout << "Heltal: " << val;
} else {
std::cout << "Andet: " << val;
}
}
```
Exception-håndtering:
```cpp
try {
int* p = new int[1000000000000]; // Kan fejle
// ...
delete[] p;
} catch (const std::bad_alloc& e) {
std::cerr << "Hukommelse fejl: " << e.what();
} catch (const std::exception& e) {
std::cerr << "Fejl: " << e.what();
}
```
---
🎓 Læringsmål for Moderne C++ standarder
Læringsmål
- Kende de vigtigste features fra C++11: move semantics, auto, lambda, smart pointers
- Bruge std::optional og std::variant fra C++17
- Anvende std::filesystem til filsystem-operationer
- Implementere korrekt exception-håndtering med try/catch/throw
Sådan kan du arbejde med emnet
- Hvad er move semantics og hvornår bruges det?
- Hvad er std::optional og hvornår er det nyttigt?
- Hvad er forskellen på C++11, C++17 og C++20?
- Hvornår skal man bruge try/catch?
⚠️ Typiske fejl at undgå
- Bruger C-style kode i moderne C++ – foretruk smart pointers, STL og algoritmer
- Catcher alle exceptions med ... – vær specifik om hvilke exceptions du håndterer
- Ignorerer compiler-advarsler – moderne C++ compilere giver værdifulde advarsler
---
💡 Tips til at komme i gang
- Sæt compiler til C++17 eller nyere –
-std=c++17flag til GCC/Clang - Læs cppreference.com – den bedste reference til C++ standardbiblioteket
- Brug std::optional til funktioner der kan fejle – undgå magic numbers som -1
Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.
Prøv Fagportalen gratis