본문 바로가기

분류 전체보기

(68)
23년 C++ chap7 클래스와 생성자 -> 생성자와 소멸자(선언,정의) 03 생성자와 소멸자 -인스턴스: 클래스 정의에 있는 데이터 멤버를 캡슐화한 객체 -캡슐화: 연관된 데이터와 함수를 논리적으로 묶어놓은 것 1 객체의 생성과 소멸 -객체는 생성자라는 특별한 멤버 함수가 호출될 때 생성됨 ㄴ객체가 데이터 멤버로 작업을 하려면 객체를 만든 뒤 데이터 멤버를 초기화해야 함 ㄴ따라서 생성자 내부에서 초기화하면 편리하다 -소멸자라는 특별한 멤버 함수가 호출되면 소멸자 내부에서 객체를 정리함 ㄴ객체가 더이상 필요 없어지면 객체가 차지하는 메모리를 비워줘야 함 2 생성자 -> 객체를 생성!!하는 멤버함수 -클래스 정의에서 데이터 멤버 선언한다고 데이터 멤버가 초기화되진 않는다(멤버의 이름,자료형만 지정한다) ㄴ그래서 생성자 내부에서 객체의 데이터 멤버를 초기화한다 -생성자의 3가지 ..
23년 C++ chap7 클래스와 생성자 -> 인라인 함수 / 애플리케이션 02 객체 지향과 클래스 4 인라인 함수 -함수 본문이 너무 짧으면, 비효율적 ㄴ> 프로그램 성능을 위해 함수 호출 부분을 실제 코드로 대체해버리게 만들고 싶을 때 사용 (1) 암묵적 인라인 함수 class Circle{ //데이터 멤버 private: double radius; //멤버 함수 public: double getRadius() const { return radius; } ... }; ㄴ> 클래스 정의 내부에 함수를 정의하면 해당 함수는 인라인 함수가 됨 BUT 함수정의부분 읽기 어렵고 캡슐화 원칙 위반 -> 비추 (2) 명시적 인라인 함수 inline double Circle::getRadius() const{ return radius; } ㄴ> 함수 정의 앞에 inline 키워드를 추가하..
23년 C++ chap7 클래스와 생성자 -> 객체 지향과 클래스 02 객체 지향과 클래스 -새로운 자료형(타입)을 만들 때는 클래스를 사용한다 -객체 지향 프로그램에서는 타입으로 클래스를 만들고, 이를 기반으로 인스턴스인 객체를 만든다(인스턴스화) *객체 지향 프로그래밍 vs 절차 지향 프로그래밍 1 객체 지향에 필요한 클래스의 구조 -클래스를 기반으로 인스턴스를 만드는 것을 인스턴스화라고 한다 -객체 지향 프로그래밍을 할 때는 1. 클래스 정의 -> 속성(데이터 멤버)과 행위(멤버 함수) 선언 2. 멤버함수 정의 -> 모든 행위(멤버 함수) 정의 3. 애플리케이션 -> 클래스 기반으로 객체를 만들어 멤버함수 사용 이 필요하다. 2 클래스 정의 -헤더, 본문, 세미콜론 세 부분으로 구성 class Circle{ // 세미콜론은 클래스 정의를 종료하겠다는 부분 (1) ..
23년 C++ chap7 클래스와 생성자 -> 클래스 01 클래스의 개요 1 타입과 인스턴스 -타입: 추상화된 것 -인스턴스: 타입을 실체화한 구체적인 실체 ex) 원 -> 타입 원1, 원2, 원3 ... -> 인스턴스 -속성: 인스턴스가 가지는 특징 -행위: 어떤 인스턴스가 스스로 할 수 있는 작업 또는 연산 ex) 인스턴스가 원이라면 원에게 반지름, 둘레, 넓이를 설정할 수 있다 2 클래스와 객체 -C++은 클래스라는 구문을 사용하여 타입(사용자 정의 자료형)을 만든다 -클래스를 기반으로 만든 인스턴스를 객체라고 한다 -객체의 속성과 행위는 데이터 멤버와 멤버 함수로 만든다 (1) 데이터 멤버 -객체의 데이터 멤버는 속성을 표현하기 위한 변수를 의미한다 ex) 원이라는 객체가 있다고 가정 -> 반지름을 double 자료형으로 만들어 변수로 나타낼 수 있..
23년 C++ chap6 함수 -> 매개변수와 오버로딩 / 스코프와 수명 05 매개변수와 함수 오버로딩 1 기본 매개변수 -기본 매개변수를 사용해서 변수에 기본값을 지정할 수 있다 -기본 매개변수를 적용하려면 오른쪽에 위치하는 매개변수들에만 적용할 수 있다 ex) int test(int a, int b, int c, int d) -> (d), (c,d), (b,c,d), (a,b,c,d) 같이 오른쪽에 위치하는 것만 적용 가능 double calcEarnings(double rate, double hours = 40.0); ㄴ> 이와 같이 적용할 수 있다 2 함수 오버로딩 -이름이 같은 함수를 2개 이상 정의하고 싶을 때 -시그니처: 함수들을 구분하기 위해 사용하는 기준 -> 함수 시그니처는 매개변수들의 자료형과 조합 int max(int a, int b) { ... } do..
23년 C++ chap6 함수 -> 자료교환 04 자료 교환 1 자료 전달 -자료 전달은 값으로 전달, 참조로 전달, 포인터로 전달의 3가지 메커니즘으로 구분 (1) 값으로 전달 -인수의 값이 복사되어 매개변수에 할당된다 -호출 함수 쪽에서 인수를 변경하지 않게 만들고 싶을 때 사용 -즉, 호출 함수는 인수의 값을 읽기만 할 수 있다(읽기 전용 접근) #include using namespace std; void fun(int y); int main() { // 선언 int x = 10; fun(x); // 호출 cout
23년 C++ chap6 함수 -> 사용자 정의 함수 03 사용자 정의 함수 1 사용자 정의 함수 유형 (1) 매개변수가 없는 void 함수 -가장 기본적인 패턴 -부가 작용을 일으키기 위해서만 사용 void 이름() { ... return; } (2) 매개변수가 있는 void 함수 -부가 작용을 일으키지만, 리턴값을 리턴하지 않는다 -'입력-처리-출력' 설계에서 출력 부분에 자주 사용 void 이름(자료형 parameter, ...) { ... return; } (3) 매개변수가 없지만 리턴값이 있는 함수 -리턴값을 목적으로 사용하는 함수 -함수 내부에서 입력 받고 이를 리턴 -'입력-처리-출력' 설계에서 입력 부분에 자주 사용 자료형 이름() { ... return value; } (4) 매개변수와 리턴값이 있는 함수 자료형 이름(자료형 paramete..
23년 C++ chap6 함수 -> 함수의 개요 / 라이브러리 함수 01 함수의 개요 -함수를 사용하여 복잡한 문제를 작은 문제로 나누고 합치는 방법으로 효율을 높일 수 있다 1 함수 장점 (1) 분할 처리 (2) 오류 확인 -> 각각의 함수들을 디버깅한 뒤 다시 하나의 프로그램으로 조립하는 방식: 검사가 쉬움 (3) 재사용 (4) 함수 라이브러리 2 함수 라이브러리 -잘 쓰여진 함수들이 보관되어 있는 곳(파일 등)을 의미 -> 코드를 직접 만들지 않아도 됨 2 함수의 기본 사용법 (1) 함수 정의 -함수를 만드는 것 리턴_자료형 함수_이름(매개변수_리스트) { 본문 } ㄴ> 함수 정의 구문(함수 헤더 + 함수 본문) (2) 함수 선언 -함수의 헤더와 세미콜론만 조합된 구문 -함수의 호출 방법을 나타낼 때 사용 int larger(int first, int second)..