시작은 미미하나 끝은 쥬쥬하리라.

Study/Passionate C++ Programming 17

[열혈 C++ 프로그래밍] (7) 상속의 이해

상속의 이해 상속 서론 상속 문법 protected선언, 상속 형태 상속 조건 상속 서론 B클래스가 A클래스를 상속하게 되면 B클래스가 객체를 생성할 때, 객체 내부에 A클래스 멤버도 존재 상속의 필요 이유 : 프로그램에 기능 추가 -> 객체의 추가 작성, 변수의 추가 작성 등 보수 작업 필요 -> 연관된 일련의 클래스들에게 공통 규약을 적용시키기 위함 -> 프로그램의 확장성 저하 = 상속을 통해 문제 해결 상속의 대상 : 상위 클래스, 기초 클래스, 슈퍼 클래스, 부모 클래스 상속 클래스 : 하위 클래스, 유도 클래스, 서브 클래스, 자식 클래스 -> 유도 클래스의 생성자는 기초 클래스의 멤버를 초기화 해야하는 의무를 지님 -> 기초 클래스의 생성자를 명시적으로 호출하여 초기화를 진행(직접적인 초기화는..

[열혈 C++ 프로그래밍] (6) friend, static, const

friend, static, const const 클래스와 함수 friend 선언 static const 객체의 const 선언 : 객체 안에 존재하는 데이터의 변경을 허용하지 않겠다는 의미 -> const로 선언된 객체를 대상으로 const 선언되지 않은 멤버 함수를 호출하면 컴파일 에러 발생 const 함수의 오버로딩 : const 선언의 유무도 오버로딩의 조건으로 사용 가능 simple(); simple() const; -> 두 함수는 오버로딩 관계에 있음 -> const 객체를 인자로 함수를 호출하면 simple() const가, 일반 객체를 대상으로 호출하면 simple() 클래스와 함수 friend 선언 friend 선언이 된 대상은 클래스의 private 멤버에 직접 접근이 가능 friend..

[열혈 C++ 프로그래밍] (5) 복사 생성자

복사 생성자 복사 생성자 깊은 복사와 얕은 복사 복사 생성자의 호출시점 복사 생성자 객체 간의 대입 연산이 이루어지는 경우 대입 연산의 결과를 정의하는 것 -> C++은 객체 간 대입 연산의 결과를 프로그래머에게 정의 촉구 -> 복사 생성자를 정의하지 않으면 디폴트 복사 생성자가 멤버 대 멤버 복사의 형태로 정의 simple sim2(sim1) -> simple 클래스에서 sim1 객체를 인자로 받아 생성되는 sim2 객체 simple(const simple &ref) -> 의 형태로 선언, 그렇지 않으면 디폴트 복사 생성자 자동 생성 -> simple sim2=sim1; 의 형태로 대입이 일어났을 때, sim1의 변경이 sim2에 영향을 미치는 것을 방지 explicit 복사 생성자의 묵시적 호출을 제..

[열혈 C++ 프로그래밍] (4) 클래스의 완성

클래스의 완성 정보은닉 캡슐화 생성자와 소멸자 클래스와 배열, this 포인터 정보은닉 정보 은닉 다른 클래스에서의 접근을 제한하는 것 (= 외부에서 멤버 변수에 접근하는 것을 방지) = 멤버 변수를 private 선언 멤버 함수를 통한 안정적인 접근 경로를 설정 액세스 함수 정보 은닉으로 인하여 추가되는 함수 const 함수 멤버 함수의 const 선언 : const 함수 내에서는 동일 클래스에 선언된 멤버 변수의 값을 변경하지 못함 + const 함수는 const가 아닌 함수를 호출하지 못함 -> 간접적인 멤버의 변경 가능성 차단 + const 상수화 객체는 const 멤버 함수만 호출이 가능 캡슐화 하나의 클래스가 하나의 목적을 위하여 연관된 함수와 변수들이 모여 있는 것 ex) A클래스의 캡슐화가..

[열혈 C++ 프로그래밍] (3) 클래스의 기본

클래스의 기본 C++ 구조체 클래스와 객체 객체지향 프로그래밍의 이해 C++ 구조체 연관 데이터를 묶어 구현 및 관리하기 용이하게 하기 위한 문법적 장치 구조체 내부의 함수들은 인라인 함수로 동작 -> 함수를 구조체 밖으로 이동 시 인라인 처리 X C++ 구조체 : - 구조체 내부에 함수와 enum 상수까지 선언 가능 - struct라는 키워드를 사용하는 클래스 - struct 선언 시 디폴트로 public 선언 클래스와 객체 클래스 연관 데이터와 연관 함수의 집합 - 클래스 선언 시 디폴트 private -> 접근 제어 선언 없이 외부에서 클래스 멤버 사용 불가 객체 : 클래스를 대상으로 생성된 변수 멤버 변수 : 클래스 내부에 선언된 변수 멤버 함수 : 클래스 내부에 선언된 함수 파일 분할 : - 헤..

[열혈 C++ 프로그래밍] (2) C언어 기반 C++ 2

C언어 기반 C++ 2 C언어 기반 C++ bool 자료형 참조자의 이해 참조자와 함수 malloc & free를 대신하는 new C언어 기반 C++ const 변수, 객체의 상수화 키워드 const int* ptr1 = &val -> ptr1을 이용하여 val1의 값을 변경 할 수 없음 - const 변수는 반드시 선언과 동시에 초기화 -> 멤버 변수를 const로 선언하는 경우에는 반드시 초기화 리스트(initialize list) 사용 -> Bar의 num은 초기화가 아닌 const int num; 을 선언 한 이후 num = 1;을 시도하는 것 - const 포인터 -> const가 맨 앞에 있으면서 포인터 변수가 가리키 는 값을 상수화를 하는 경우에는 *ptr 상수화 -> const 위치가 자료..

[열혈 C++ 프로그래밍] (1) C언어 기반 C++ 1

C언어 기반 C++ 1 printf와 scanf를 대신하는 입출력 방식 함수 오버로딩 매개변수의 디폴트 값 인라인 함수 이름 공간 범위 지정 연산자 포인터 Printf와 scanf를 대신하는 입출력 방식 iostream iostream : 신 버전 라이브러리 iostream.h : 구 버전 라이브러리 std::endl; 개행 cout = console output, 별도의 서식지정 필요 없음, 연이은 입출력 가능 cin = console input, 별도의 서식지정 필요 없음, 연이은 입출력 가능 데이터선언 C : scanf("%s", str); C++ : cin >> str 함수 오버로딩 동일한 함수명을 가지면서 매개변수형이 다른 n개의 함수 관계 ex) 함수명이 같은데 매개변수가 다른 것 -> O e..