일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- increment operator
- discord bot
- virtual function table
- std::cout
- C++
- c++ basic practice
- virtual function
- member function pointer
- std::vector
- diamond inheritance
- virtual destructor
- dynamic_cast
- vector capacity
- pointer to member data
- this call
- new&delete
- suffix return type
- c++ multi chatting room
- conversion constructor
- delete function
- 더 지니어스 양면포커
- base from member
- vector size
- placement new
- std::endl
- std::ostream
- return by reference
- constructor
- virtual inheritance
- operator overloading
- Today
- Total
목록2024/08 (43)
I'm FanJae.

1. 프로그램의 실행파일의 생성 과정- 일반적으로 CPU를 디자인 하는 개발자는 명령어 체계도 디자인한다.- 0011, 0010, 0100, 0101 등과 같이 명령어를 구성한 이후, 이 명령어에 각각의 이름을 넣어준다.- ADD, MIN, MUL 등과 같이 말이다.- 이러한 방식의 프로그래밍이 어셈블리 프로그래밍이다. ① 전처리기에 의한 치환작업- C,C++에서 #으로 시작하는 지시자- #include, #define 등 ② 컴파일러에 의한 번역- 단계 1에서 전처리 작업이 일어나도 여전히 C언어로 구성되어 있다.- 보통 많은 컴파일러가 중간 코드에서 어셈블리 코드를 생성한다. ③ 어셈블러에 의한 바이너리 코드 생성- 어셈블러가 이러한 어셈블리 코드를 받아서 바이너리 코드(기계어 코드)로 변환한다.- ..

※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. -> 연산자 재정의를 통한 Smart Pointer#include class Car{ int color;public: ~Car() { std::cout () { return obj;} Car& operator*() { return *obj;}};int main(){ Ptr p ( new Car ) ; // p는 객체, 타입 Ptr // Ptr의 객체 p가 Car* 역활을 수행 p->go(); // p.operator->()go() // (p.operator->())->go() (*p).go();}- 이 예제를 보면,..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. std::cout의 원리#include int main(){ std::cout 1-1. std::cout의 원리- std::ostream 타입의 객체이다.- operator연산자 재정의 기술을 사용하여 재정의 한 것이다.#include /*namespace std{ class ostream { }; ostream cout;}*/int main(){ std::cout - 즉, 실제로는 std namespace안에 ostream이라는 class가 존재한다는 것이다.- 또한 std::cout은 std::cout.operator ※ 정확히 말하면, basic_ostream 이..

본 내용은 뇌를 자극하는 윈도우즈 시스템 프로그래밍(윤성우 저) 책을 보고 정리한 내용입니다.개인이 학습한 내용을 정리할 목적으로 게시한 것으로 책의 상세한 내용은 직접 구매하여 확인을 부탁드립니다. 1. 시스템 프로그래밍의 이해와 접근 1-1. 시스템(컴퓨터 시스템)이란?- 일반적으로 개발자들이 얘기하는 시스템이란, 하드웨어뿐만 아니라 운영체제를 포함한다. 1-2. 시스템 프로그래밍이란?- 컴퓨터 시스템을 활용하는 소프트웨어를 개발한다.- 개발자들이 만드는 소프트웨어(응용 소프트웨어)에는 시스템 프로그래밍 요소가 포함된다.- Windows 운영체제 자체의 기능을 십분 활용하는 프로그래밍 1-3. 응용 소프트웨어 개발과의 차이점- 즉, 응용 소프트웨어의 개발을 위해서는 우리가 구현하지 않더라도, 시스템..

※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 증가(++) 연산자(Increment Operator)#include class Point{public: int x{0}; int y{0}; Point() = default; Point(int x, int y) : x{x}, y{y} { }};int main(){ int n = 3; ++n; Point p{1,1}; ++p;}- 일반적으로 객체를 ++한다는 것이 조금 이상해 보일 수 있지만, 학습을 위해서 해보고자 한다.- 증가(++) / 감소(--) 연산자 재정의가 사용되는 예는 C++ 표준 라이브러리인 STL의 반복자가 사용한다. 1-1. 증감 연산자 재정의..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 연산자 재정의(Operator Overloading)class Point{ int x{0}; int y{0};public: Point() = default; Point(int x, int y) : x{x}, y{y} {}};int main(){ Point p1{1, 1}; Point p2{2, 2}; int n1 = 10 + 20; // ok Poiint p3 = p1 + p2; // ?}- 연산자 재정의(Operator Overloading) 이라는 것은 사용자 정의 타입의 객체에 대해서도 +, - 등의 연산자를 사용할 수 있게 하는 문법이다.Point p3 = p1..

※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 다중 상속(Multiple Inheritance)이란?class InputFile{public: void read() {}};class OutputFile{public: void write() {}};class IOFile : public InputFile, public OutputFile{};int main(){ IOFile file; file.open();}- 클래스가 2개 이상의 기반 클래스로부터 상속 되는 것- C++,Lisp, Curl 등은 이를 지원하지만, Java, C# 등은 다중 상속을 지원하지 않는다. 1-1. 다중 상속의 문제점- 서로 다른 기반 클래스에 동일 이름의 멤버가 있을..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. RTTI (Run Time Type Information)#include #include int main(){ int n1 = 10; auto n2 = n1; // n2의 타입은? int const std::type_info& t1 = typeid(n2); std::cout - 실행시간에 타입의 정보를 얻을 때 사용하는 기술이다. 1-1. RTTI 기술의 사용법- 헤더를 사용한다.- typeid 연산자를 사용한다.- 타입의 정보를 담은 type_info 객체를 얻을 수 있다.- type_info 객체의 멤버 함수 name()을 사용 ① Typeid#include #include i..

※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 가상 함수에 대한 의문점class Base{ int bm{0};public: virtual void f1() {} virtual void f2() {} virtual void f3() {}};class Derived : public Base{ int dm{0};public: void f2() override {}};int main(){ Base base; Dervied derived; Base *p = &derived; p->f2();}- 지난 시간 가상 함수에 대해 다뤘다.- 이때, p->f2(); 에서 어느 함수를 호출 할 것인가에 대한 이야기이다. - ..

※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 추상 클래스(Abstract class)class Shape{public: virtual ~Shape() {} virtual void draw() = 0;};int main(){ Shape s; // error Shape* p; // ok }- draw() 처럼 구현이 없고, =0 으로 끝나는 가상 함수를 Pure Virtual Function(순수 가상 함수)라고 한다.- 이러한 순수 가상함수가 한 개 이상 있는 클래스를 추상 클래스라고 한다. 1-1. 추상 클래스의 특징- 객체를 생성할 수 없다.- 포인터 변수는 만들 수 있다. 1-2. 추상 클래스로 부터 파생된 클래스class ..