FAGPORTALEN

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

Sådan kan du arbejde med emnet

⚠️ Typiske fejl at undgå

---

💡 Tips til at komme i gang

Øv dette emne med AI — quizzer, forklaringer og feedback tilpasset dit niveau.

Prøv Fagportalen gratis

🤖 Denne side er skrevet med kunstig intelligens og fagligt gennemgået af Fagportalen, som har det redaktionelle ansvar. Finder du en fejl, så skriv til support@fagportalen.dk.