본문 바로가기

Coding Test/C++ 기초10

[C++ 기초] 템플릿 1. 템플릿 1-1. 템플릿이란 ? 인스턴스를 생성하기 위한 틀은 클래스! 이와 유사하게, 함수나 클래스를 생성하기 위한 틀이 템플릿 이때, 템플릿은 모든 타입을 대변하는 T 타입을 이용해서 선언되는데, 덕분에 T 자리에 어떤 타입이 들어오는지에 따라 다양한 함수, 클래스를 생성할 수 있다. 🔔 제네릭(Generic) 프로그래밍 이처럼 일반화된 틀(템플릿)에 다양한 인자를 전달함으로써 여러가지 함수, 클래스를 만드는 프로그래밍 💥 템플릿 인스턴스화 (구체화) 정의된 템플릿에 구체적인 데이터 타입을 가진 인자를 전달함으로써 실제 함수, 클래스를 생성하는 과정 1-2. 템플릿의 종류 (1) 클래스 템플릿 (2) 함수 템플릿 1-3. 템플릿 선언 방법 template template 2. 함수 템플릿 2-1... 2022. 8. 18.
[C++ 기초] 오버로딩 1. 오버로딩 vs. 오버라이딩 오버로딩 (overloading) 오버라이딩 (overriding) 개념 동일한 이름의 함수를 중복 정의 상속 받은 함수를 재정의 제한 조건 1. 메소드명 동일 2. 메소드 원형이 하나 이상 달라야 함 3. 메소드 리턴 타입 동일 여부 상관 X 1. 메소드명 동일 2. 메소드 원형 모두 동일 3. 메소드 리턴 타입 동일 * 메소드 원형 : parameter 개수, 자료형 2. 오버로딩 2-1. 오버로딩이란 ? 오버로딩이란 동일한 이름의 함수를 중복 정의한다는 개념이다. 컴파일러는 사용된 함수의 매개변수 개수나 자료형을 구분하여 자동으로 어떤 함수를 호출해야 하는지 결정한다. 따라서 오버로딩은 하나의 함수에 여러 형태를 부여하는 다형성(polymorphism)을 갖는다. #.. 2022. 8. 11.
[C++ 기초] 상속 1. 상속 상속이란 객체 지향 프로그램의 한 특성으로, 부모 클래스의 멤버 변수 / 멤버 함수를 그대로 자식 클래스가 물려받아서 재사용한다는 개념이다. * 부모 클래스 = 슈퍼 클래스 = base class 자식 클래스 = 서브 클래스 = derived class 1-1. 상속의 효과 ① 경제성 : 불필요한 코드의 중복을 제거 ② 편의성 : 유지, 보수에 유리함 1-2. 상속 형식 class Base명 { }; class Derived명 : [접근제어자] Base명 { }; 1-3. 접근 제어자와 상속 public protected private 모든 함수에서 접근 가능 (클래스 내/외) 클래스 내 모든 멤버 함수와 이 클래스를 상속받는 자녀 클래스의 멤버 함수에서 접근 가능 클래스 내 모든 멤버 함수에.. 2022. 8. 3.
[C++ 기초] 클래스 1. 클래스란 ? 클래스는 멤버 변수와 멤버 함수를 묶어서 저장할 수 있는 틀, 단위이다. 1-1. 클래스 vs. 구조체 C C++ 구조체가 포함 가능한 것 멤버 변수 멤버 변수 멤버 함수 C와 달리 C++의 구조체는 멤버 변수 뿐만 아니라 멤버 함수 또한 포함할 수 있는데, 이러한 점에서 C++의 클래스는 구조체의 상위 호환으로 설명된다. (구조체와 거의 동일한 개념!) Property : 클래스 내부 멤버 변수 Method : 클래스 내부 멤버 함수 다만, C++에서 클래스와 구조체는 기본 접근 제어자에서 차이를 보인다. C++ 구조체 : 기본 접근 제어자 public C++ 클래스 : 기본 접근 제어자 private 1-2. 클래스 vs. 인스턴스 클래스 인스턴스 (=객체) 인스턴스를 만들기 위한 .. 2022. 8. 3.
[C++ 기초] 포인터 1. 포인터 1-1. 포인터란 ? 포인터란 데이터가 저장되어 있는 메모리 주소값을 저장하는 변수이다. 1-2. 포인터 연산자 ① 주소 연산자 ② 역참조 연산자 연산자 & * 기능 그 변수의 메모리 주소값을 가져온다 ( address of ~ ) 그 주소에 저장된 변수값을 가져온다 ( value of ~가 가리키는 애 ) ex int x = 5; cout 2022. 7. 20.
[C++ 기초] 배열 1. 배열 (Array) 1-1. 배열이란 ? 배열은 타입이 동일한 데이터 여러개를 저장할 수 있는 자료구조이다. 1-2. 배열의 선언과 초기화 1-2-1. 선언 vs. 초기화 선언 초기화 배열의 껍데기를 정의함 배열에 실제 데이터값을 삽입함 1-2-2. 배열의 선언 후 초기화 자료형 배열명[배열크기] ; ▷ 배열을 선언할 때는 배열의 크기 (= element 개수)를 지정해준다. int myArray[3]; // 크기가 3인 배열 myArray 선언 myArray[0] = 10; // myArray 초기화 myArray[1] = 20; myArray[2] = 30; 1-2-3. 배열의 선언과 동시에 초기화 선언과 동시에 초기화를 하는 경우에는 배열의 크기를 미리 지정해줄 필요 없다. 이 경우, 배열의 .. 2022. 7. 20.
[C++ 기초] 조건문, 반복문 1. 조건문 1-1. 조건문 (=분기문) 이란 ? 프로그램의 흐름을 조건에 따라서 분기시키는 문장 조건을 제시하고, true이면 실행 / false이면 무시한다. 1-2. 조건문의 종류 ① if 문 ② switch 문 1-2-1. if 문 if (조건문1) { 실행문 } else if (조건문2) { 실행문 } else { 실행문 } ex ) if (x 0) { x = x - 1; } else { x = x + 1; // x = 0 인 경우 } 1-2-2. switch 문 switch문은 특별한 형태의 if문이다. 타겟 변수에 대하여 그 정수값에 따라 다른 실행문을 수행한다.기본적으로 모든 case를 돌기 때문에, 해당 case 이후 switch문을 .. 2022. 7. 13.
[C++ 기초] 연산자 1. 산술 연산자 1-1. 산술 연산자의 종류 연산 표현식 이항 덧셈 a + b 이항 뺄셈 a - b 곱셈 a * b 나눗셈 a / b 나머지 a % b (a, b 모두 정수) 전위 증가 ++a 전위 감소 --a 후위 증가 a++ 후위 감소 a-- 1-2. 산술 연산자의 우선순위 후위 증감 >> 전위 증감 >> 곱셈, 나눗셈, 나머지 >> 이항 덧뺄셈 2. 불리언 연산자 2-1. 불리언 연산자의 종류 타입 연산 표현식 관계 연산자 아니다 ! a 크다 크거나 같다 a > b a >= b 작다 작거나 같다 a < b a 2022. 7. 13.
[C++ 기초] 변수, 상수, 리터럴 1. 변수 1-1. 기본 타입 변수 (Intrinsic Type) 타입 타입명 문자 char 정수 short int long long long 실수 float double long double 논리 bool true , false 부호 signed 기본적으로 정수는 signed unsigned 2. 상수 2-1. 상수란 ? 상수는 값의 변경이 불가능한 변수이다. ex ) const int c1 = 3; const bool c2 = true; const char c3 = 'a'; 2-2. 상수의 특성 ① 선언과 동시에 값을 설정해야 한다. ② ' 변경이 불가능 ' = ' 메모리 위치 값을 변경할 수 없음 ' 3. 리터럴 3-1. 리터럴이란 ? 리터럴은 변수가 아닌, 변하지 않는 데이터 그 자체를 의미한다... 2022. 7. 13.