다형성을 가진 기본 클래스에서는 소멸자를 반드시 가상 소멸자로 선언하자 함수가 반환하는 포인터가 파생 클래스 객체에 대한 포인터라는 점과 이 포인터가 가리키는 객체가 삭제될 때는 기본 클래스 포인터를 통해 삭제 된다는 점, 그리고 결정적으로 기본 클래스에 들어 있는 소멸자가 비가상 소멸자 라는 점이다. C++ 의 규정에 의하면, 기본 클래스 포인터를 통해 파생 클래스 객체가 삭제될 때 그 기본 클래스에 비가상 소멸자가 들어 있으면 프로그램 동작은 미정의 사항이라고 되어 있다. 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class TimeKeeper { public: TimeKeeper(); ~TimeKeeper(); }; void main() { TimeKeeper *pt..
컴파일러가 만들어낸 함수가 필요 없으면 확실히 이들의 사용을 금해 버리자. 우리는 종종 클래스를 쓰면서 복사 생성자와 복사 대입 연산자를 막고 싶을때가 있습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 class CA { }; void main() { CA ca; CA ca2; CA ca3(ca); ca2 = ca; } cs 그러나 우리가 구현하지 않았다고 해서 안 되는 게 아니라 컴파일러가 자동으로 생성해버립니다. 해결 방법은 컴파일러가 생성하는 복사 생성자와 복사 대입 생성자를 private 시켜버리는 겁니다. 이렇게 되면 컴파일러가 디폴트를 만들려고 해도 private로 묶여 있어서 접근할 수 없어져 만들 수가 없게 됩니다. 예제1 1 2 3 4 5 6 7 8 class CA { pu..
타이틀 입력부분C++이 은근슬쩍 만들어 호출해 버리는 함수들에 촉각을 세우자. 1 2 3 4 5 6 7 8 9 class Empty { } ; class Empty { public: Empty() { . . . } // 기본 생성자 Empty ( const Empty & rhs ) { . . . } // 복사 생성자 ~Empty ( ) { . . . } // 소멸자 Empty & operator = ( const Empty & rhs ) { . . . } // 복사 대입 연산자 }; Colored by Color Scripter cs C++의 함수 중에서 프로그래머가 선언해주지 않아도 컴파일러가 저절로 선언해주는 멤버함수가 있다. 복사생성자, 복사 대입연산자, 소멸자가 있는데, 컴파일러가 만들어주는 함수..
- Total
- Today
- Yesterday
- StringFormat
- process
- 네트워크 정보
- C
- RSA
- 인젝션
- 네트워크설정
- IV
- C# 고급 기술
- bit
- cpu 이용률
- 디지털서명
- 블록암호화
- C++
- C#
- string
- 디자인 패턴
- 최우림
- 백터
- 디자인패턴
- 네트워크 연결
- 암호화
- 해시
- 블럭암호화
- 패턴
- 대칭키
- cpu 점유율
- 네트워크 카드 이름
- cpu 정보
- C#.NET
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |