언어/C++ 8

상속

상속 상속(inheritance)란 이미 존재하는 클래스로부터 멤버들을 물려받는 것이다. 이미 존재하는 클래스를 부모 클래스라고 하며 상속받는 클래스를 자식 클래스라고 한다. class CarClass : 접근지정자 ParentClasss{ //멤버변수, 멤버함수 } class Car { int speed; }; class SportCar : public Car { bool turbo; }; > 자식 클래스는 부모 클래스가 가지고 있는 모든 멤버들을 전부 상속받고 자신이 필요한 멤버를 추가하기 때문에 항상 자식 클래스가 부모 클래스를 포함하게 된다. - 부모 클래스의 멤버 변수와 멤버함수가 자식 클래스로 상속된다. 따라서 자식 클래스는 멤버 변수와 멤버 함수를 자유롭게 사용할 수 있다. 자식 클래스는 필..

언어/C++ 2022.11.14

복사생성자

함수로 인수를 전달하는 방법 값에 의한 호출(call-by-value) 참조에 의함 호출(call-by-reference) #include using namespace std; class Circle { int radius; public: Circle(int r=0):radius{r}{} ~Circle(){} void setRadius(int r) { radius = r; } void print() { cout buffer 객체가 동적 메모리를 사용하려고 하면 오류가 발생한다. 이러한 결과가 나오는 이유는 기본 복사 생성자에서 단순히 멤버의 값을 다른 객체로 복사하였기 때문이다. > 실행오류가 발생하는 이유는 지역 변수인 clone이 소멸되면서 이름을 저장한 메모리 공간을 반납하게 되고 이 동일한 공간을..

언어/C++ 2022.11.14

포인터

포인터 동적 메모리에서 할당하는 메모리를 주소로 참조해야 할 때 사용하는 것 int* p; double *p; char *p; short *p; > 포인터는 생성된 직후에 초기화되어있지 않아, 사용하기 전에 반드시 초기화를 해 주어야 한다. 주소 연산자 p=&number; int price=86600; int *p; p=&price; 변수정의 포인터 정의 변수의 주소에 포인터 저장 간접 참조 연산자 포인터는 포인터가 가리키는 메모리 공간의 값을 읽어오거나 변경할 수 있기 때문에 유용하다. 그리고 내용을 가져오려면 *p라고 하면 된다. 이것을 간접참조라고 한다. int price=86600; int *p=&price; > 포인터가 아무것도 가리키고 있지 않을 때는 nullptr로 설정하는 것이 좋다. nu..

언어/C++ 2022.11.07

생성자와 접근제어

생성자 초기화를 담당하는 특수한 함수이다. 생성자를 사용하면 객체의 생성과 동시에 초기화가 가능하다. > 변수의 경우 초기화를 하지 않으면 쓰레기값을 가지는 경우가 종종 있다. 객체도 마찬가지이다. 객체도 초기화하지 않으면 쓰레기값을 가진다. 객체가 생성된 후에는 반드시 객체를 초기화하여야 한다. 객체의 초기화에는 멤버 변수의 값을 초기화하는 것뿐만 아니라 객체의 동작에 필요한 메모리 공간이나 기타 자원들을 할당하는 것도 포함된다. > 객체를 생성할 때 객체를 초기화하는 함수가 자동으로 호출된다면 매우 편할 것이다. 이것이 생성자이다. class Time{ public: int hour; int minute; //생성자 Time(int h, int m){ hour=h; minute=m; } void pr..

언어/C++ 2022.10.27

클래스와 객체

「객체지향」: 객체지향 프로그래밍은 우리가 살고 있는 실제 세계가 객체(object)들로 구성되어 있는 것과 비슷하게, 소프트웨어도 객체로 구성하는 방법이다. > 소프트웨어 객체들이 존재하고 이러한 객체들을 조합하여 자기가 원하는 기능을 구현하는 기기법을 객체지향이라 한다. > 객체지향 프로그래밍은 데이터와 함수를 하나의 덩어리로 묶어서 생각하는 방법이다. 데이터와 함수를 하나로 묶는 것을 캡슐화라고 한다. 「절차지향」: 절차지향 프로그래밍은 프로시저를 기반으로 하는 프로그래밍 방법이다. > 프로시저는 일반적으로 함수를 의미한다. 절차 지향 프로그래밍으로 번역하는 것보다 "프로시저 지향 프로그래밍"이라는 용어가 더 적합하다. 절차 지향 프로그래밍에서 전체 프로그램은 함수의 집합으로 이루어진다. > 절차지..

언어/C++ 2022.10.27

함수

「함수」: 특정 작업을 수행하여 그 결과를 반환환 하는 것. > 미리 만들어진 함수를 사용할 수도 있고, 프로그래머가 함수를 만들 수도 있다. 각 함수는 다른 함수들과 연결될 수 있으며 다른 프로그램에서도 사용될 수 있다. 함수라는 개념을 사용하게 되면 코드의 재활용 가능성, 가독성 증대, 유지 관리의 용이 등 많은 장점이 있다. int 함수이름(매개면수1, 매개변수2){ 문장들... } -> 예 int max(int x, int y){ if (x>y) return x; else return y; } 함수를 정의할 때는 함수가 반환하는 값의 유형을 가장 먼저 적어준다. 이것을 반환형(return type)이라고 한다. 함수를 정의하는 목적은 함수를 사용하기 위해서이다. 함수를 사용하려면 함수 이름을 써주..

언어/C++ 2022.10.22

제어구조, 배열

「제어구조」 순차 구조 선택 구조 반복 구조 「관계 연산자」: 두 개의 피 연산자를 비교하는 데 사용 ==: 연산자 값이 같은지 >,=, switch 문은 여러 개의 가능한 실행 경로 중에서 하나를 선택하는 데 사용한다. > switch문은 switch문 안에 들어 있는 수식을 계산하여서 case절과 비교된다. 일치하는 case절이 있으면 case절의 문장들이 실행되다가 break문에 도달하면 종료된다. 만약 case절에서 일치하는 정수값을 찾지 못하면 최종적으로 default 절이 실행된다. > switch문은 정수형에 대해서만 동작하는 것이 유리하다. switch(제어식){ case c1: 문장; break; case c2: 문장2; break; default: 문장4: break; } > 만약 ca..

언어/C++ 2022.10.21

기초사항

프로그램이란 우리가 하고자 하는 작업을 컴퓨터에게 전달하여 주는 역할을 하는 것이다. 프로그램은 컴퓨터에게 무엇을 어떻게 시킬지를 기록해 놓은 작업 지시서라고 보면 된다. 「C++특징」 클래스(class): 클래스를 이용하여 하나의 객체의 속성과 동작들을 한 곳으로 모아서 정의할 수 있다. 상속(inheritance): 클래스를 상속받아서 기존의 코드를 재사용 할 수 있다. 다형성(polymorphism): 동일한 함수가 객체의 종류에 따라서 다르게 동작하는 것 연산자 중복(operator overloading): 대상에 따라서 동일한 연산자로 새로운 연산을 정의할 수 있다. 참조 타입(reference type): 변수의 별명을 만들어서 변수와 같이 사용할 수 있다. 함수 중복(function over..

언어/C++ 2022.10.19