일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- increment operator
- virtual function table
- diamond inheritance
- discord bot
- std::vector
- dynamic_cast
- delete function
- return by reference
- std::ostream
- operator overloading
- virtual function
- new&delete
- vector size
- this call
- placement new
- std::endl
- pointer to member data
- c++ basic practice
- suffix return type
- constructor
- c++ multi chatting room
- member function pointer
- 더 지니어스 양면포커
- base from member
- virtual inheritance
- C++
- virtual destructor
- vector capacity
- conversion constructor
- std::cout
- Today
- Total
목록C++ (57)
I'm FanJae.
1. Max Implement#include #include templateconst T& mymax(const T& obj1, const T& obj2){ return obj1 1-1. 알고리즘 함수가 사용하는 정책(비교방식)을 변경하는 방법.① 알고리즘 함수가 사용하는 정책(비교방식)을 변경하고 싶을때 보통 이항 조건자를 사용한다. (C++ STL)std::sort(v.begin(),v.end(), [](auto &a, auto&b) { return a.size() #include #include templateconst T& mymax(const T& obj1, const T& obj2){ return obj1 b.size(); } ); auto ret4 = mymax(s1, ..
1. std::this_thread namespace- 스레드 관련 4개의 함수를 제공하는 namespace- 헤더std::this_thread::get_id()현재 스레드의 ID 반환std::this_thread::sleep_for()주어진 시간 만큼 현재 스레드 재우기std::this_thread::sleep_until()주어진 시간 까지 현재 스레드 재우기std::this_thread::yield()다른 스레드를 실행할 수 있도록 힌트 제공 1-1. std::this_thread::get_id()- 실행중인 현재 스레드의 ID를 반환한다.std::thread_id get_id() noexcept;#include #include int main(){ std::cout h; st..
1. Member Function Pointer 1-1. 함수 포인터와 멤버 함수class X{public: void mf1(int a) {} // void mf1(X* this, int a) static void mf2(int a) {}};void foo(int a) {}int main(){ void(*f1)(int) = &foo; // ok// void(*f2)(int) = &x::mf1; // error; void(*f3)(int) = &x::mf2; // ok void(X::*f2)(int) = &X::mf1; // ok}- 일반 함수 포인터에 멤버 함수의 주소를 담을 수 없다.- 일반 함수 포인터에 static 멤버 함수는 담을 수 있다. ※ 일반 ..
1. Strategy Pattern의 정의다양한 알고리즘이 존재 하면 이들 각각을 하나의 "클래스로 캡슐화하여 알고리즘의 대체가 가능"하도록 한다. Strategy 패턴을 이용하면 클라이언트와 독립적인 다양한 알고리즘으로 변형할 수 있다. 알고리즘을 바꾸더라도 클라이언트는 아무런 변경을 할 필요가 없다. 1-1. 예제를 통한 Strategy Pattern의 필요성 이해#include #include #include class Edit{ std::string data;public: std::string get_text() { std::cin >> data; return data; }};int main(){ Edit edit; while (1) {..
1. this call 1-1. 멤버 함수의 의문점.class Point{ int x{0}; int y{0};public: void set(int a, int b) { x = a; y = b; }};int main(){ Point pt1; Point pt2; pt1.set(10, 20); pt2.set(10, 20);}- 멤버 데이터는 객체당 한 개씩 생성된다.- 멤버 함수는 코드 메모리에 한 개만 만들어져 있다. - 객체가 여러 개 생성되어도 멤버 함수는 한 개만 있다.※ 함수 인자는 2개 (a, b) 밖에 없는데, x가 어떤 객체의 멤버 인지(pt1.x인지 pt2.x 인지) 어떻게 아는가? 1-2. 어떤 변환이 일어나는가?clas..
1. Trivial 1-1. Special Member Function- 사용자가 제공하지 않으면 컴파일러가 제공하는 멤버 함수가 존재한다.① 디폴트 생성자(Default Constructor)② 소멸자(Destructor)③ 복사 생성자(Copy Constructor)④ 복사 대입연산자(Copy Assignment)⑤ 이동 생성자(Move Constructor)⑥ 이동 대입연산자(Move Assignment) ※ 보통 이러한 멤버 함수들을 Trivial 하다고 한다.2. Trivial Default Constructor※ 예제가 아주 많아서 check 함수는 한번만 보이고, 이후 부터는 임의 생략한다.① The constructor is not user-provided② T has no virtual ..
1. Template Method Pattern의 정의 오퍼레이션에는 알고리즘의 처리 과정만을 정의하고 각 단계에서 수행할 구체적인 처리는 서브클래스에서 정의한다. Template Method 패턴은 "알고리즘 처리과정은 변경하지 않고 알고리즘 각 단계의 처리를 서브클래스에서 재정의" 할 수 있게 한다. 1-1. 예제를 통한 Template Method Pattern의 필요성 이해 (코드의 중복)#include #include "Painter.h"class Shape{public: virtual ~Shape() {} virtual void draw() = 0;};class Rect : public Shape{public: void draw() override { std::cout..
1. new와 delete 1-1. new와 delete의 원리#include class Point{ int x, y;public: Point(int a, int b) : x{a}, y{b} { std::cout Point* p1 = new Point(1,2);- 위와 같이 쓰면 크게 2가지 작업을 진행한다. 즉, new를 실행하면 아래와 같은 2가지가 실행되는 것이다. ① 메모리할당 void *p = operator new(sizeof(Point))② 생성자호출 Point *p1 = new(p) Point(1,2);- 여기서 new(p) Point(1,2); 와 같은 표기법을 placement new라고 한다. delete p1;- 위와 같이 쓰면 크게 2가지 작업을 진행한다. 즉, delet..
1. Chapter 13 템플릿(Template) 1 1-1. 함수 템플릿의 정의① 인자로 전달되는 두 변수에 저장된 값을 서로 교환하는 SwapData라는 이름의 함수를 템플릿으로 정의해보자. - 그리고 다음 Point 클래스를 대상으로 값의 교환이 이뤄짐을 확인할 수 있도록 main 함수를 구성해보자.class Point{private: int xpos, ypos;public: Point(int x = 0, int y = 0) :xpos(x), ypos(y) { } void ShowPosition() const { cout #include template void SwapData(T& value, T..
1. 변환 연산자와 변환 생성자 1-1. 변환 연산자#include class Int32;{ int value;public: Int32() : value(0) { } operator int() const { return value; }};int main(){ int pn; // primitive type Int32 un; // user type pn = un; // un.operator int() un = pn; // pn.operator Int32() 이는 불가능 // 1. un.operator=(pn) // 2. Int32(pn)}- 객체가 다른 타입으로 변환 될 때 호출되는 함수이다. operator TYPE(){..