C++ 6

c++ 연산자 오버로딩 정리

목차 연산자 오버로딩 멤버 함수 방식 - 대입 연산자 오버로딩 전역 함수 방식 연산자 오버로딩 멤버와 전역 함수 방식 중 하나만 지원하는 연산자도 있으니 둘 다 알도록 한다. 1. 멤버 함수 방식 대입 연산자( a = b )는 멤버 함수 방식으로만 구현할 수 있다. // 대입 연산자 x, 선언 및 초기화 int a = 0; int b = 1; // 대입 연산자 a = b; class Exam { public: Exam operator+(const Exam& e) { Exam exam; exam.x = x + e.x; // Exam a 를 기준으로 한다. exam.y = y + e.y; return exam; } private: int x; int y; }; int main() { Exam a; Exam ..

c++ 배열 정리

목록 1. 선언과 초기화 선언 초기화 2. 배열에 접근 및 값 변경 배열 이름의 뜻 포인터 이용 참조 이용 인덱스 이용 주의할 점 3. 배열과 포인터 4. 배열을 인자로 넘길 때 5. 다차원 배열 선언과 초기화 1. 선언 TYPE 이름[const 개수]; visual stdio 컴파일러는 배열의 크기를 상수로 받도록 한다. 2. 초기화 int number[5] = {};// 1 int number[10] = { 1,2,3 };// 2 int number[] = { 1,2,3,4,5 };// 3 모든 원소를 0으로 초기화 3번 째 원소까지 1, 2, 3으로 초기화하고 나머지는 0으로 초기화 데이터 개수만큼 크기를 설정 배열에 접근 및 값 변경 배열 이름의 뜻 struct Knight { hp = 100; ..

c++ 참조 정리

목록 1. 선언과 초기화 2. 관점에 따라 달라지는 참조 어셈블리 관점에서 참조 c++ 관점에서 참조 3. 포인터 대신 참조를 사용하는 이유 4. 참조의 단점과 해결방안 쓰기 기능을 막는 방법 가독성을 높이는 방법 5. 참조에 포인터를 포인터에 참조를 포인터로 사용하던 걸 참조로 넘겨주는 경우 참조로 사용하던 걸 포인터로 넘겨주는 경우 선언과 초기화 int number = 1; int& ref = number; int& ref2;// error ! ref2 = number; 참조는 선언과 동시에 초기화를 해줘야 한다. 참고로 참조는 산술 연산을 제공하지 않는다. ref++;// error ! 뒤에 말하겠지만 참조는 특정 바구니의 가명과 같다. 즉, 하나의 바구니에 종속되기 때문에 산술 연산을 통해 참조가..

c++ 포인터 정리

목록 1. 포인터 2. 선언과 초기화 포인터 선언 포인터 초기화 포인터는 고정 크기를 가지는데 왜 타입을 명시할까? 포인터 사용 예시 ( 1 ) 포인터 사용 예시 ( 2 ) 3. 메모리 크기 불일치 4. 포인터 연산자 주소 연산자 간접 연산자 산술 연산자 간접 멤버 연산자 5. 포인터를 매개 변수로 받는 함수의 보험 const가 *앞에 위치 const가 *뒤에 위치 6. 포인터가 가리키는 주소가 존재하지 않는다? nullptr을 넘겨주는 포인터 7. 다중 포인터 포인터 int number = 1; 해당 코드의 의미를 알아보자. number라는 이름의 4 byte 정수 타입의 바구니를 만든다. number라는 변수는 스택 메모리에 할당한다. number = 1은 number 바구니에 정수 1을 넣는다. 즉..

c++의 다양한 input 방법과 속도 비교

input 방법 1. std::cin >> c++의 기본적인 입력 기능이다. cin의 반환값 기본적으로 cin 객체를 반환한다. if (cin >> num) while (cin >> num) cin은 간혹 if문과 while문의 조건문에 작성할 때가 있다. cin이 속해있는 iostream 헤더파일은 cin이 if문과 while문에 들어가면 conversion operator를 통해 bool 값으로 형 변환시킨다. 입력에 성공했다면 true 아니면 false를 반환한다. 여기서 입력에 성공했다는 것은 type에 맞는 입력값이 제대로 들어온 것이다. int num; cin >> num; // 정수 입력! 여기서 문자열을 입력하면 false를 반환한다. bool b = cin >> num; istream b..

header

기본 개념 1. header 파일 예시 예를들면, test.h 라는 헤더 파일이 있고 안에 namespace { class { function } }이 있다하자. 여기서 어떻게 동작하는지와 같은 자세한 내용은 작성하지 않는다. 즉, 틀만 작성한다. // test.h namespace N { class test { public: void function(); private: int value = 0; }; } 2. .cpp 파일 예시 이제 test.cpp 파일을 만들고 #include "test.h"로 컴파일러에게 test.h에 정의된 내용을 알려준다. header 파일에 틀을 작성했다면, .cpp 파일에는 틀이 어떻게 동작하는지 작성해주면 된다. header 파일에서 function의 기능을 작성하지 않..