C++ 다형성

lovemyin의 이미지

어느 회사에더 면접때 질문했던 내용이라고 합니다.
여러분의 답은 무엇일까요???

C++의 다형성에 대하여 자신의 어머니에게 설명한다고 할 때 어떻게 표현하겠는가???

navidad의 이미지

어머님께서 자식들에게 식사하라고 지시하면, 자식들마다 식사방법(오른손/왼손등.)은 다를지라도 식사는 가능하다는걸 예로 설명해드리면 적절할까요?

=================================
나비아빠

=================================
나비아빠

lovemyin의 이미지

ㅋㅋ 재미있네요...

--------------------------------------------------------
가장 심플한 것이 가장 아름다운 것이다.

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

Scarecrow의 이미지

나: "어머니!! 서랍이든 금고이든 방문이든 연다는 건 똑같은 거에요.
단지 뭘 여는지에 따라 여는 방법은 다른 것이겠지만요. 그런걸 다 연다 라고 하지요."

어머니: "네가 지금 나를 놀리는 것이냐?"

lovemyin의 이미지

대부분 다형성하면 가장 먼저 생각하는게 런타임 다형성인 Virtual을 생각하죠.
제가 잘못 알고 있는 지는 모르겠지만 컴파일타임에 형태가 결정되는 Template도 다형성의 일부아닌가요???
----------------------------------------------------
가장 심플한 것이 가장 아름다운 것이다.

/***************************************************
* 가장 심플한 것이 가장 아름다운 것이다.
***************************************************/

lawch의 이미지

제 경우에 동일한 질문을 두번 받았는데, 한번은 SE하시는 교수님께서 물어보셨는데,
제가 동일한 이름으로 서론 다른 파라미터들을 처리할 수 있다는 식으로 말하니
고개를 끄덕하시면서 다른 질문을 하셨는데,
PL하시는 교수님은 당장 그게 다는 아니라고 제말을 자르시더군요...

나중에 어떤 책을 보니 다형성 (polymorphism)에는 세가지 유형이 있는데
- parametric polymorphism
- subtyping polymorphism
- ad-hoc polymorphism

흔히들 쉽게 말하는 C++의 다형성은 ad-hoc polymorphism, 즉 overloading에 관한것이고,
lovemyin님의 template은 parametic polymoprhism에 관한 것이라더군요.
runtime시의 virtual은 subtyping polymorphism (late binding)에 해당되겠군요.

만약 제가 어머니한테 C++ 다형성에 관해 말하라면,
"어머니, 제가 용돈을 달라고 아버지께 말씀드리면 만원을 주시는데,
어머니께 달라고 하면 꿈밤을 맞지요. 이처럼 상황에 따라서 동일한 요청이
다른 일을 하는 것을 C++의 다형성이라고 합니다."

-- 너무 단순화해서 위험하기는 하지만 어머니한테 잘난척한다고 맞기는 싫고...--;;;

wish의 이미지

같은 진공청소기를 사용해서 "청소"를 하더라도 마루바닥과 카펫, 좁은 틈을 청소할 때 앞부분을 바꿔서 청소하는 것 처럼

같은 역할을 수행하는 과정임에도 들어오는 것의 형식이 달라도 처리할 수 있게 하는 기능이라고 설명하겠습니다.

아니면 헤어드리이기 꼬다리 바꿔 끼는 것, 110/220 봍트 꼬다리 등으로 설명했을 듯 합니다.

yilove78의 이미지

엄마왈 : 뭐하니?
나왈 : C++에서 다형성이라는게 있어서 공부하고 있어요...
엄마왈 : 다형성이라는게 뭐니..
나왈 : 엄마 난 엄마가 낳았어 아니면 아빠가 낳았어?.. ㄱ-;........
엄마왈 : 예가 왠 동문서답....엄마 아빠한테서 같이 태어낳지.....
나왈 : 음.......응...그게 다형성이래....
엄마왈 : 된장 다 끓었다... 나와서 밥먹어라.....

yilove78의 이미지

나왈 : 우걱우걱 ...
엄마왈 : 근데 엄마는 잘 모르겠다...이해가 어렵네....
나왈 : 그래? 엄마도 나를 낳은거고 아빠도 나를 낳은거자나.....낳는건 같은데 방법은 다르지?
엄마왈 : .......ㅠㅠ.....(애가 벌써 어른이 됐네..)....밥이나 먹고 빨리 학교가....

그렇습니다...나를 낳는다는 개념은 같은데 엄마랑 아빠랑 그 방법이 달랐던것입니다...음양의 조화라고나 할까요 ...

ㅡ,.ㅡ;;의 이미지


엄마: 얘야 C++의 다형성이란게 뭐냐..

나 : 어..그거... 엄마는 몰라도되.


----------------------------------------------------------------------------

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.