상속받은 비 가상 함수는 재정의하면 안 된다 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 #include class A { public: void f() { std::cout 총평 public 상속은 is-a 관계입니다. 그리고 비가상 함수는 클래스 파생에 관계없는 불변 동작을 정해주는 것입니다. 즉 불변의 동작을 원하여 만든 함수를 파생 클래스에서 다시 정의하면 이것이 목적이 있어 다시 정의하는 것이라면 결국 비 가상 함수를 쓸 이유가 전혀 없다는 것입니다. 결국. 목적이 있어 다시 정의하는 함수 일 경우에는 가상함수를 쓰는 것 이 좋습니다. 결국에는 비 가상 함수는..
가상 함수 대신 쓸 것들도 생각해 두는 자세를 시시때때로 길러 두자. 1) 비가상 인터페이스 관용구(non-virtual interface)를 사용하자. - 공개되지 않은 가상 함수를 비가상 public 멤버 함수로 감싸서 호출하는, 템플릿 메서드 패턴의 한 형태 - NVI에서 가상 함수가 엄격하게 public 일 필요는 없다. - 장점 : 가상 함수가 호출되기 전에 어떤 상태를 구성하고 가상 함수가 호출된 후에 그 상태를 없애는 작업을 래퍼를 통해 공간적으로 보장된다. *비가상 인터페이스 관용구(non-virtual interface)란? - 사용자로 하여금 public 비가상 멤버 함수를 통해 private 가상 함수를 간접적으로 호출하게 만드는 방법. - 관용구에 쓰이는 비가상 함수는 가상함수의 래..
인터페이스 상속과 구현 상속의 차이를 제대로 파악하고 구별하자. 인터페이스 상속과 구현 상속은 무엇을 의미하는가? 기본 클래스의 멤버 함수의 상속 방법을 두고 하는 말이다. 인터페이스 상속과 구현 상속의 차이점은 무엇인가? 인터페이스 상속이란, 순수 가상 함수의 상속을 말한다. 구현 상속이란, 가상 함수와 비가상 함수의 상속을 말한다. 각 함수들은? 순수 가상 함수 : 가상 함수이나, 함수의 정의 부분이 없고, 선언 부분만 있는 함수 가상 함수 : 파생 클래스에서 가상 함수를 받는 함수가 없다면, 기본 클래스 함수가 호출되고 있다면, 파생 클래스의 가상 함수를 호출시켜주는 매체가 되는 함수 비 가상 함수 : 일반 멤버 함수, 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
상속된 이름을 숨기는 일은 피하자. 파생 클래스의 이름은 기본 클래스의 이름을 가린다. Scope (유효 범위) 1 2 3 4 5 6 int x; // 전역 변수 void someFunc() { double x; // 지역 변수 std::cin >> x; // 입력을 받아, 지역 변수 x에 새 값을 읽어 넣음 } Colored by Color Scripter cs *안쪽 유효 범위에 있는 이름이 바깥쪽 유효범위에 있는 이름을 가림 상속 부모 클래스에 속해 있는 것을 자식 클래스 멤버 함수 안에서 참조하는 문장이 있으면 컴파일러는 참조 대상을 바로 찾아낼 수 있음 자식 클래스의 유효 범위가 부모 클래스의 유효 범위 안에 중첩되어있음 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17..
- Total
- Today
- Yesterday
- 네트워크 연결
- bit
- C++
- 네트워크설정
- cpu 이용률
- RSA
- absl-cpp
- 최우림
- 백터
- 대칭키
- 디자인패턴
- C#.NET
- cpu 점유율
- string
- 암호화
- 네트워크 카드 이름
- 디자인 패턴
- IV
- 블럭암호화
- cpu 정보
- 해시
- 패턴
- AES
- 블록암호화
- C#
- 네트워크 정보
- C
- 알고리즘
- Project
- C# 고급 기술
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |