일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- virtual inheritance
- base from member
- return by reference
- suffix return type
- vector size
- discord bot
- virtual destructor
- std::cout
- this call
- conversion constructor
- vector capacity
- new&delete
- operator overloading
- member function pointer
- pointer to member data
- constructor
- delete function
- increment operator
- std::endl
- virtual function
- std::vector
- std::ostream
- virtual function table
- dynamic_cast
- c++ basic practice
- C++
- c++ multi chatting room
- 더 지니어스 양면포커
- placement new
- diamond inheritance
- Today
- Total
목록C++/Basic (37)
I'm FanJae.
※ 본 포스트는 코드누리 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 ..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. UpCasting#include class Animal{ std::string name; int age;public: void cry() { }};class Dog : public Animal{ int color;public: void setColor(int c) { color = c; }};int main(){ Dog dog; Dog* p1 = &dog; // ok // int* p2 = &dog; // Error Animal* p3 = &dog;}- UpCasting이란, 기반 클래스 포인터로 파생 클래스 객체를 가리키는 행위를 의미한다.- 메모리 레이아웃 차원에서 보면, 파생 클래스(Derived Class)인..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. Inhertance#include class Student{ std::string name; int age; int id;};class Professor{ std::string name; int age; int major;};int main(){ Student s; Professor p;}- 학사 관리 프로그램을 만들고 있는 상태에서, Student, Professor 등 필요한 클래스를 설계중이다.- 여기서 Student, Professor 등이 가지는 공통된 속성(name,age)이 있다.- 이를 매번 적어주기 보단 공통된 것으로 묶어지면 훨씬 더 관리가 용이하다. cla..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. Copy Constructor- 자신과 동일한 타입 한개를 인자로 가지는 생성자class Point{ int x; int y;public: Point() : x{0}, y{0} {} // 1 Point(int a, int b) : x{a}, y{b} {} // 2};int main(){ Point p1; // ok. Point p2(1,2); // ok// Point p3(1); // error. Point(int) 필요 Point p4(p2); // ok. Point(Point)}- Point p4(p2);와 같은 생성자는 만든적이 없음에도 이상없이 잘 작동한다. ※ 복사 생성자를 만들..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 객체를 어떻게 구분하는가?#include 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);}- 위와 같은 예제가 있다고 생각할때, 우리가 이와 같은 의문을 가질 수 있다.- 멤버 데이터는 분명히 객체당 한 개씩 생성되고, 멤버 함수 또한 코드 메모리에 한 개만 만들어진다.- 이는 객체가 여러 개 생성되도 그러하다. 대체 어떤 객체인지 어떻게 구분하는 것일까?void set(int a, int b){..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. const 객체에서 발생할 수 있는 문제점#include class Point{public: int xpos, ypos; Point(int x, int y) : xpos{x}, ypos{y} {} void set(int x, int y) { xpos = x; ypos = y; } void print() { std::cout - 테스트를 위해 public에 멤버 데이터를 둔 상태이다. - 사실 이 예제는 아무런 문제가 없다. (실행만 생각한다면 말이다.)- 이때 객체를 const로 만들때 상황을 생각해보면, 아래와 같은 문제가 발생한다. 1-1. print()와 같은 값을 바꾸지 않는 함수도 에러 발생#incl..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. - Car 객체를 몇개나 생성하는지 알아보고 싶다고 가정해보자.- 멤버 데이터 count를 사용해서 시도했다.#include class Car{ int speed{0};public: Car() {} ~Car() {}};int main(){ Car c1; Car c2; std::cout - 멤버 데이터를 사용하면, 객체당 한 개가 생성된다.- 각 객체가 독립적인 자신의 count 멤버 변수를 사용하므로 이 방법은 실패다. - 이번엔, 전역변수 count를 사용해서 시도해보자#include int count{0};class Car{ int speed{0};public: Car(..