[전공] 20

[명품 C++] 08 상속

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 블뎁블뎁 C++ 에서 상속 inheritance 클래스 사이의 상속, 객체 사이에는 상속 관계 없음 기본 클래스의 속성과 기능을 파생 클래스에 물려줌 base class - derived class 기본 클래스의 속성과 기능 + 자신만의 속성과 기능 파생 클래스로 갈수록 클래스의 개념이 쿠체화 다중 상속으로 클래스의 재활용성을 높임 자바는 다중 상속이 없고 인터페이스 개념이 있음 상속의 목적 및 장점 간결한 클래스 작성 클래스 간의 계층적 분류 및 관리의 용이함 상속은 클래스들의 구조적 관계 파악이 용이 하다 클래스 재사용과 확장을 통한 소프트웨어 생산성 향상 앞으로 있을 상속에 대비해 클래스를 객체 지향적으로 설계 해야함 다형..

[전공] 2022.06.06

[명품 C++] 07 프렌드와 연산자 중복

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 블뎁블뎁 프렌드 함수 클래스의 멤버로 선언하긴 좀 그렇고, 내부에 접근하게 만들고는 싶을 때 클래스의 멤버 함수가 아닌 외부 함수 클래스 외부에 선언된 전역 함수 다른 클래스의 멤버 함수 다른 클래스의 모든 멤버 함수 → 외부에서도 private 에 접근할 수 있게 된다. class Rect { // 전역 함수 equals()를 Rect 클래스에 프렌드로 선언 friend bool equals(Rect r, Rect s); }; class Rect { // RectManager 클래스의 equals() 멤버 함수를 Rect 클래스의 프렌드로 선언 friend bool RectManager::equals(Rect r, Rect s..

[전공] 2022.06.05

[명품 C++] 6장 함수 중복과 static 멤버

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 노션 공유를 원하시는 분은 댓글에 이메일 남겨주세요 함수 중복 함수 중복 function overloading 동일한 이름의 함수가 공존 - 다형성 polymorphism 함수 중복이 가능한 범위 보통 함수들 사이 클래스의 멤버 함수들 사이 상속 관계에 있는 기본 클래스와 파생 클래스의 멤버 함수들 사이 함수 중복 성공 조건 중복된 함수들의 이름 동일 중복된 함수들의 매개 변수 타입이 다르거나 개수가 달라야 함 리턴 타입은 함수 중복과 무관 int sum(int a, int b, int c) { return a + b + c; } double sum(double a, double b) { return a + b; } int su..

[전공] 2022.06.05

[명품 C++] 05 함수와 참조, 복사 생성자

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 노션 공유를 원하시는 분은 댓글에 이메일 남겨주세요 함수의 인자 전달 방식 값에 의한 호출 call by value 주소에 의한 호출 call by address 참조에 의한 호출 call by reference 값에 의한 호출 call by value 함수가 호출되면 매개 변수가 stack에 생성됨 호출하는 코드에서 값을 넘겨줌 호출하는 코드에서 넘어온 값이 매개 변수에 복사됨 #include using namespace std; void swap(int a, int b) { int tmp; tmp = a; a = b; b = tmp; } int main() { int m = 2, n = 9; swap(m, n); // 값이 ..

[전공] 2022.06.05

[명품 C++] 04 객체 포인터와 객체 배열, 객체의 동적 생성

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 객체 포인터 객체의 주소 값을 가지는 변수 포인터로 멤버를 접근할 때 . 연산자 대신 - > 객체포인터 - > 멤버 Circle donut; double d = donut.getArea(); // p의 자료형은 Circle * Circle *p; // 객체에 대한 포인터 선언 p = &donut; // 포인터에 객체 주소 저장 d = p -> getArea(); // 멤버 함수 호출 *포인터로도 private 에는 접근 불가능 p->getArea() == (*p).getArea() // (*p)는 객체 자체가 된다. 객체 배열, 생성 및 소멸 객체 배열 선언 객체 배열을 위한 공간 할당 배열의 각 원소 객체마다 생성자 실행 매개..

[전공] 2022.06.02

[명품 C++] 03 - 2 생성자 소멸자 구조체

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 생성자 constructor 객체가 생성되는 시점에서 자동으로 호출되는 멤버 함수 클래스 이름과 동일한 멤버 함수 리턴 값이 없다. class Circle { Circle(); // 클래스 이름과 동일 Circle(int r); // 생성자 중복 선언 - 매개 변수 없는 생성자, 매개 변수 가진 생성자 }; Circle::Circle() { } // 생성자 함수도 구현해야 한다. Circle::Circle(int r) { } 생성자 함수의 특징 생성자의 목적 객체가 생성될 때 객체가 필요한 초기화를 위해 멤버 변수 값 초기화, 메모리 할당, 파일 열기, 네트워크 연결 등 생성자 이름은 반드시 클래스 이름과 동일 리턴 타입이 없다..

[전공] 2022.06.02

[명품 C++] 03 클래스와 객체

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 객체 캡슐화 객체의 본질적인 특성 외부에 객체의 일부분 공개 멤버 변수와 멤버 함수 상태 state와 행동 behavior로 구성 멤버 변수에 상태 저장 멤버 함수에 행동 저장 직접 값에 접근하지 않음 → 멤버 함수를 통해 멤버 변수에 접근 클래스와 객체 클래스 객체를 만드는 틀, 설계도 객체 (== 실체)가 아님 멤버 변수와 멤버 함수로 구성 클래스 선언부 class declaration class 키워드를 이용 멤버 변수와 멤버 함수 선언 멤버 변수는 클래스 선언 내에서 초기화할 수 없음 멤버 함수는 원형 prototype 형태로 선언 멤버에 대한 접근 권한 지정 private, public, protected public ..

[전공] 2022.06.02

[명품 C++] 02 C++ 프로그래밍의 기본

출처 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 (윤영 교수님) 주석문 개발자가 붙인 메모, 프로그램에 대한 설명 프로그램의 실행에 영향을 미치지 않음 /* 여러 줄 주석 * // 한 줄 주석 #include #include 전처리기 C++ preprocessor에게 내리는 지시 컴파일 전에 실행 헤더 파일 컴파일러가 설치된 폴더에서 찾으라는 지시 표준 입출력을 위한 클래스와 객체, 변수 등이 선언 코드로 정의되어 있지 않음! 확장자 없는 텍스트 파일 include 폴더에 존재 *표준 C++에서 헤더 파일은 확장자 없음, 이름 공간 적시 필요 main() 함수 프로그램의 실행을 시작하는 함수 운영 체제 OS가 main() 함수 실행 main()이 종료하면 프로그램 종료 반환값..

[전공] 2022.06.02

[명품 C++] 01 C++ 시작

참고 : 명품 C++ Programming (저자 황기태) 객체지향프로그래밍 프로그래밍 언어 기계어 - 어셈블리어 - 고급언어 어셈블러 : 어셈블리어 프로그램을 기계어 코드로 변환 컴파일러 : 고급 언어로 작성된 프로그램을 기계어 코드로 변환 컴파일 : 고급 프로그램을 기계어 프로그램으로 변환하는 과정 C++ 언어의 역사 연대순 C → C++ → JAVA → C# C언어에 객체 지향 특성(object oriented programming) 및 기능 추가 C++은 C언어의 모든 기능 유지 C++ 표준 1998년 ANSI(American National Standards Institue)에서 표준 설정 그 후 C++ 표준 계속 진화 표준의 중요성 모든 플랫폼, 모든 표준 C++ 컴파일러에 의해 컴파일 가능 ..

[전공] 2022.06.02