일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- pointer to member data
- base from member
- constructor
- vector size
- dynamic_cast
- operator overloading
- member function pointer
- C++
- this call
- diamond inheritance
- std::vector
- vector capacity
- suffix return type
- c++ basic practice
- std::ostream
- conversion constructor
- virtual destructor
- virtual function
- new&delete
- std::endl
- virtual inheritance
- c++ multi chatting room
- std::cout
- placement new
- delete function
- increment operator
- virtual function table
- discord bot
- 더 지니어스 양면포커
- return by reference
- Today
- Total
목록2024/08 (43)
I'm FanJae.
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. OOP(Object Oriented Programming)에 대한 필요성 이 개념은 C++에서 가장 중요한 개념인 '객체 지향 프로그래밍'에 대한 이야기를 해보고자 한다.OOP의 기본적인 개념과, 접근 지정자(private,public), 캡슐화(Encapsulation) 에 대해서도 얘기하고자 한다. 먼저, 사각형을 그리고(draw), 넓이를 구하는 함수에 대해 생각해보자.#include int getRectArea(int x1, int y1, int x2, int y2){ return (x2-x1) * (y2-y1);} void drawRect(int x1, int y1, int x2, int y2){ ..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. C언어 캐스팅의 문제점 - Explicit Casting기본적으로, C언어의 캐스팅 방법과 C++ 언어의 캐스팅 방식에는 약간의 차이가 존재한다.int* p1 = (int *) malloc(sizeof(int)*10);int* p2 = static_cast(malloc(sizeof(int)*10));- C++ 언어로 넘어오면서 아래 방법을 더 권장하기 시작했다. C 방식 캐스팅의 문제점#include #include int main(){ int* p1 = (int *)malloc(sizeof(int)*10); free(p1); int n = 10; double* p2 = &n; *p2..
1. nullptr- '0'은 원래 정수(int)형 literal(리터럴)이다.- 이는 포인터 변수 초기화에 사용될 수 있다.- 0이 아닌 다른 정수형 literal은 포인터로 암시적 변환이 될 수 없다.- 0을 가진 정수형 변수도 포인터로 암시적 형변환이 될 수 없다. int n1 = 0;int* p1 = 0;int* p2 = n1; // error nullptr // C++11- null pointer를 나타내는 literal- 모든 종류(타입)의 포인터 변수를 초기화 하는데 사용 가능- 정수(실수) 초기화에 사용될 수는 없다.int* p4 = nullptr;int n2 = nullptr; // error 1-1. nullptr의 등장배경- 컴파일러마다 조금 차이는 있지만, 일반적으로 C와 C++..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. Reference(참조) 1-1. Reference의 정의#include int main(){ int n = 10; int* p = &n; int& r = n; r = 20; std::cout - C 언어에서는 변수의 주소값을 담을 수 있는 Pointer라는 것이 있다.- C++에서는 포인터와 유사한 형태의 Reference라는 기능이 존재한다. (유사한 것이 결코 같은게 아니다.)- 포인터 변수를 선언하는 것처럼 다음과 같이 선언이 가능하다.int &r = n; - Reference란, 이미 존재하는 변수(메모리)에 대한 추가적인 별칭을 부여하는 문법이다.- 기존 포..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. - C++에서 새롭게 추가된 for문이 존재한다.1. range for 1-1. std::size() // C++ 17일반적으로, for를 사용할 때, 배열의 크기가 바뀌면, for 안의 크기도 바뀌어야 했다.그때 C 언어에서 가장 많이 사용한 방식이 아래 방식이다.#include int main(void){ int x[10] = {1,2,3,4,5,6,7,8,9,10}; for (int i = 0; i C++에서는 std::size 라는 것이 존재한다.#include int main(void){ int x[10] = {1,2,3,4,5,6,7,8,9,10}; for (int i = 0..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. Suffix Return type(후위 반환 타입)int add1(int a, int b) // Type A. 일반적인 함수{ return a+b;}auto add2(int a, int b) -> int // Type B. 반환 값인 int가 후위에 표기되어있다.{ return a+b;}- Type A가 지금까지 사용되었던, 일반적인 함수의 형태이다.- C++11에서 부터 새롭게 등장한 함수의 표기법으로, 함수의 반환 타입을 함수의 () 뒤쪽에 적는 표기법이다.※ 즉, 기존 함수의 표기법은 반환 타입이 입력보다 앞쪽에 표기되었던 반면, Suffix Return type은 반환 타입이 입력 뒤쪽에 표기된다. ..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. Suffix Return type(후위 반환 타입)int add1(int a, int b) // Type A. 일반적인 함수{ return a+b;}auto add2(int a, int b) -> int // Type B. 반환 값인 int가 후위에 표기되어있다.{ return a+b;}- Type A가 지금까지 사용되었던, 일반적인 함수의 형태이다.- C++11에서 부터 새롭게 등장한 함수의 표기법으로, 함수의 반환 타입을 함수의 () 뒤쪽에 적는 표기법이다.※ 즉, 기존 함수의 표기법은 반환 타입이 입력보다 앞쪽에 표기되었던 반면, Suffix Return type은 반환 타입이 입력 뒤쪽에 표기된다. ..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. 1. 함수 템플릿(Function template) 1-1. 함수 오버로딩의 단점함수 오버로딩(Function overloading) - 관련 내용 링크- 인자의 형태(타입, 개수)가 다르면 동일 이름의 함수를 여러개 만들 수 있다.Ex) square(int), square(dobule) ※ square 함수를 만들 때, 인자 타입과 반환 타입만 다르고 구현이 동일(유사)한 함수를 여러개 만들어야 한다. 1-2. 함수 템플릿(Function template)의 정의- C++ 언어의 해결책은 구현이 동일(유사)한 함수가 여러 개 필요하면 함수를 만들지 않는다.- 대신, 함수를 생성하는 틀(템플릿)을 만들자는 것이다.// te..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. - Function 이라는 것은 원래 C 언어에도 존재하던 개념이다.- C 언어에는 없는 C++ 함수만의 특징들이 존재한다. 1. Default parameter#include void foo(int a, int b = 0, int c = 0){ std::cout - C 언어에서는 함수 인자에 값을 넣는 표기 사용이 불가능하다.- 반면, C++에서는 함수 인자에 Default 값을 넣는 것이 가능하다. ※ Default parameter라는 것은 함수 호출시 인자를 전달하지 않으면, 미리 지정된 인자 값을 사용하게 한다는 것이다. 1-1. Default parameter 사용시 주의 사항① 함수의 마지막 인자부터 차..
※ 본 포스트는 코드누리 C++ Basic 강의 내용을 보고 정리한 포스트입니다. C 언어와 다르게 C++ 언어에서는 여러 가지 데이터 타입과 변수가 추가되었다. 1) auto, decltype 1-1) autoint main(){ int x[5] = {1,2,3,4,5}; auto n = x[0]; // n은 int type이 된다. auto a = x; // 배열의 이름은 해당 배열의 첫번째 원소의 주소로 암시적 형변환이 된다. 따라서 a는 (int *) 가 된다. } auto ( C++ 11 )- 변수 선언시, 우변의 표현식을 조사하여 컴파일러가 타입을 결정한다.- 컴파일 할 때 타입을 결정하여, 실행 시 오버헤드는 없다.- 위 예제의 경우는 x[0]이 int ..