C++/C++

C++/C++

14장 C++ 코드의 재활용 (미완성)

Private 상속 Student 클래스 예제 인터페이스와 구현 public 상속에서, 클래스는 인터페이스와 구현을 상속한다. (기초 클래스에 있는 순수 가상 함수들은 구현이 없이 인처페이스만 제공할 수 있다.) 인터페이스를 획득하는 것은 is-a 관계의 역할이다. 반면에 컨테인먼트에서는 어떤 클래스가 인터페이스 없이 구현을 획득한다. 인터페이스를 상속하지 않는 것이 has-a 관계의 역할이다. 키워드 explicit 하나의 매개변수로 호출될 수 있는 생성자는, 그 매개변수의 데이터형을 클래스형으로 암시적으로 변환하는 함수로 기능한다는 사실을 기억하라. 컨테인트먼트와 private 상속 컨테인먼트 1. 사용하기 쉽다. 2. 하나 이상의 기초 클래스로부터 클래스를 상속할 때, 상속이 문제를 일으킬 수 있기..

C++/C++

16. String 클래스와 표준 템플릿 라이브러리 (미완, 일반화 프로그래밍)

string 클래스 문자열 생성 string 클래스 입력 문자열 작업 string 클래스가 제공하는 그 밖의 기능 C++ 시스템들은 실제 문자열보다 훨씬 큰 메모리 블록을 대입하여 문자열이 자랄 수 있는 공간을 제공한다. 그러고 나서, 그 문자열이 마침내 그 크기를 초과하게 되면, 프로그램은 그 크기의 두 배인 새로운 블록을 대입하여 연속적인 크기 조절 없이 문자열이 자랄 수 있게 더 많은 공간을 제공한다. capacity() 메서드는 현재 블록의 크기를 리턴하고, reserve() 메서드는 그 블록을 위한 최소 크기를 사용자가 요청하게 한다. string 객체를 가지고 있지만 C 스타일 문자열이 필요할 때 c_str() 메서드가, 호출하는 string 객체와 동일한 내용을 가지는 C 스타일 문자열을 가..

C++/C++

13. 클래스의 상속

간단한 기초 클래스부터 시작하자 생성자: 접근에 대하여 멤버 초기자 리스트 파생 클래스 생성자는, 기초 클래스 생성자에 값들을 전달하기 위해 멤버 초기자 리스트 문법을 사용할 수 있다. child::child(int age, int cuteScore) : parent(age)// 초기자 리스트 { cuteScore = cuteScore; } 여기서, child는 파생 클래스이고 parent는 기초 클래스이다. age는 기초 클래스 생성자가 사용하는 변수들이다. 기초 클래스 생성자를 제공하지 않는다면, 프로그램은 디폴트 기초 클래스 생성자를 사용한다. 멤버 초기자 리스트는 생성자에만 사용할 수 있다. 파생 클래스와 기초 클래스의 특별한 관계 첫쨰, 파생 클래스 객체는 기초 클래스 메서드들이 private이..

C++/C++

[C++] Rule of three

Rule of three : 이 규칙은 다음 중 하나라도 클래스에서 정의한다면, 아마도 반드시 모두 정의해야 할 것이라 주장합니다: 소멸자 (Destructor) 복사 생성자 (Copy Constructor) 복사 대입 연산자 (Copy Assignment Operator) ●C++는 다음과 같은 멤버 함수를 자동으로 제공한다. (더 있지만, Rule of three에 쓰이는 것만 설명하겠다) 디폴트 소멸자(파괴자) : 객체의 모든 클래스 타입 멤버의 소멸자를 호출합니다. 복사 생성자 : 객체의 모든 멤버를 복사 생성자의 인수로부터 해당 멤버의 복사 생성자를 호출하여 생성하며, 비-클래스 타입 (예: int나 포인터와 같은)의 데이터 멤버에는 평범한 대입을 수행합니다. 복사 대입 연산자 : 객체의 모든 ..

메카인
'C++/C++' 카테고리의 글 목록