수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1691173
  • Today | 479
  • Yesterday | 628

1 Articles, Search for 'Override'

  1. 2007/03/01 Override를 통해 잃어버리는 것들
Programming/C++2007/03/01 19:17

Override를 통해 잃어버리는 것들

원본 : http://www.debuglab.com/knowledge/override.html

1.요약

부모 클래스가 가지고 있는 멤버 함수를 자식 클래스가 재정의하는 과정을 override라고 부릅니다. override를 하게 되는 경우 우리가 잃어버리는 것은 무엇이 있을까요?


2.본문

override를 하는 경우 우리가 잃는 것은 바로 부모 클래스가 가지고 있는 같은 이름의 멤버 함수 입니다.

쉽게 말해서 부모가 Func라는 이름의 overload된 함수를 5개 가지고 있었다고 합시다. 그리고 자식 클래스가 그 중에 하나를 override하게 된다면 우리는 override한 함수만이 아니라 5개의 함수 전부(부모 것만)를 사용할 수 없게 됩니다.

- 예 1 -

class A 

{ 

public: 

    void Func() {} 

    void Func(int) {} 

    void Func(int, int) {} 

    void Func(int, int, int) {} 

}; 



class B : public  A 

{ 

public: 

    void Func(int) {} 

}; 



int main(int argc, char* argv[]) 

{ 

    B b; 

    b.Func();        // error 

    b.Func(1);       // ok 

    b.Func(1, 1);   // error 

    b.Func(1, 1, 1);// error 

} 

이와 비슷한 개념은 컴파일러가 공짜로 제공해주는 함수에도 똑같이 적용됩니다.

다음과 같이 아무일도 하지않는 클래스를 만들어 봅시다.

class A 

{}; 

그래도 다음과 같은 사용이 가능합니다.

A a; 

A b(a); 

a = b; 

그 이유는 컴파일러가 공짜로 A의 디폴트 생성자, 복사 생성자, 대입 연산자를 만들어주기 때문이죠.

그런데 여기서 다음과 같이 클래스를 변경해봅시다.
v
class A 

{ 

    A(int) {} 

}; 

이제 우리는 컴파일러가 공짜로 만들어준 디폴트 생성자와 복사 생성자를 사용할 수 없습니다. 우리 나름대로 잘 살아보겠다고 생성자를 하나 만든 것이 이런 대가를 치루게 하는군요.

아마도 디폴트 생성자가 없다는 에러는 한 번 이상 만나보셨을 겁니다.



- 2001.08.13 Smile Seo -
"C++" 카테고리의 다른 글
  • auto_ptr (0)2007/03/05
  • 템플릿을 이용한 동기화 클래스 만들기 (0)2007/03/05
  • Override를 통해 잃어버리는 것들 (0)2007/03/01
  • 비교 연산자를 위한 예약어들 (0)2007/03/01
  • 할당된 블록의 크기 구하기 (0)2006/12/08
2007/03/01 19:17 2007/03/01 19:17
Posted by webdizen
Tags Override
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2667

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 적벽대전
  • 목표
  • 포스팅
  • 확장 update
  • 공과대학
  • Cataloging
  • 비자
  • 서부여행
  • 바탕화면
  • Browser
  • ASCII Character
  • XML Web Service
  • Event
  • Watch
  • SUID
  • 영화
  • Kprobes
  • 튜닝
  • 아파치
  • 연예

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08
  • 재밌네요~ 첫번째꺼는 요즘....
    Hybrid 2009

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  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      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.