251217 TIL - C++ 8일차

2025. 12. 17. 20:41언리얼 7기 본캠프

오늘은 어제 제대로 익히지 못했다고 판단했던 2-1을 다시 보고 2-2 또한 수강하여, 스택메모리, 힙메모리, 댕글링 포인터, 스마트포인터, 얕은복사와 깊은복사, 함수 오버로딩, 템플릿 등에 대해서 익혔음

 

전반적으로 지금까지 익혔던 코드들에 더해서 유연성을 추가해주는 과정이라고 생각했고, 이걸로 코드를 상당히 더 유연하고 편하게 짤 수 있을것이라고 생각됨

 

앞으로 더더욱 발전해서 효율적인 코드를 쓰는 사람이 될 수 있었으면 좋겠음

 

#include <iostream>
using namespace std;

class Base {
public:
    virtual ~Base() { // 소멸자를 자식클래스가 받으려면 가상함수로 지정해줘야 합니다
        cout << "~Base" << endl;
    }
};

class Derived : public Base {
public:
    ~Derived() {
        cout << "~Derived" << endl;
    }
};

int main() {
    Base* p = new Derived();
    delete p;
}
#include <iostream>

using namespace std;

class Animal {
public:
    virtual void Speak() { // 가상함수로 변경
        cout << "Animal sound\n";
    }
};

class Dog : public Animal {
public:
    void Speak() override { // 오버라이드 추가해서 오버라이드
        cout << "Woof!\n";
    }
};

int main() {
    Animal* p = new Dog();
    p->Speak();
    delete p;
}
#include <iostream>

using namespace std;

class Base {
public:
    virtual ~Base() { // 부모클래스의 소멸자에 virtual을 붙여야 자식클래스를 메모리에서 같이 해제시킬 수 있음
        cout << "~Base" << endl;
    }
};

class Derived : public Base {
public:
    ~Derived() {
        cout << "~Derived" << endl;;
    }
};

int main() {
    Base* p = new Derived();
    delete p;
}
#include <iostream>
#include <memory>

using namespace std;

struct B; // 전방 선언

struct A {
    shared_ptr<B> b;
    ~A() { cout << "~A" << endl; }
};

struct B {
    weak_ptr<A> a; // A와 B가 서로 참조를 하고있어서 main이 끝나도 해제되지 않음. 둘 중 하나를 weak로 바꿔주면 해결됨
    ~B() { cout << "~B" << endl; }
};

int main() {
    auto a = make_shared<A>();
    auto b = make_shared<B>();
		
		// 서로 참조(레퍼런싱) 하고 있음.
    a->b = b;
    b->a = a;

    cout << "End of main" << endl;
}
#include <iostream>
using namespace std;

template <typename T1, typename T2>
auto Add(T1 a, T2 b)
{
    return a + b;
}

int main()
{
    // cout << Add(3, 3.5) << endl;
    return 0;
}
#include <iostream>
using namespace std;

template<typename T>
void Swap(T& a, T& b)
{
    T temp = a;
    a = b;
    b = temp;
}

int main()
{
    int x = 10;
    int y = 20;

    Swap(x, y);

    cout << "x: " << x << ", y: " << y << endl;
    // 기대 결과: x: 20, y: 10
}

'언리얼 7기 본캠프' 카테고리의 다른 글

251219 TIL - C++ 10일차  (0) 2025.12.19
251218 TIL - C++ 9일차  (0) 2025.12.18
251216 TIL - C++ 7일차, 새로운 과제 하달  (1) 2025.12.16
251215TIL - C++ 6일차 - 과제 제출  (0) 2025.12.15
251210 TIL - C++ 4일차  (1) 2025.12.10