2012-02-13 2 views
1

저는 C++의 중요한 기능을 처음 접했습니다. 이미이 주제에 대한 몇 가지 질문/답변을 읽고 몇 가지 문서를 살펴 보았습니다. 그러나 나는 아직도 이것과 혼동을 느낍니다 ...가상 함수를 사용하여 C++에서 다형성 동작을 얻는 방법?

이 개념을 쉽고 느리게 시작하고 기본에서 시작하는 몇 가지 좋은 온라인 자습서 또는 책 장이 있으면 도움이 될 것입니다.

또한, 어떤 사람은 손에 들고있는 운동 자료를 알고 있으면 좋을 것입니다.

가이 세상에서 많은 동물이 있습니다

+0

참조하십시오 [는 C++ 도서 목록 (http://stackoverflow.com은/questions/388242/the-definitive-c-book-guide-and-list) – MSalters

+0

이 도서 목록을 보시기 바랍니다 http://stackoverflow.com/questions/388242/the-definitive-c-book-guide -and-list – Damian

답변

7

여기에 내가 들어 다형성의 최선의 설명이다. 대부분은 약간의 소리를 낸다 :

class Animal 
{ 
public: 
    virtual void throwAgainstWall() { }; 
}; 

class Cat : public Animal 
{ 
public: 
    void throwAgainstWall(){ cout << "MEOW!" << endl; } 
}; 

class Cow : public Animal 
{ 
public: 
    void throwAgainstWall(){ cout << "MOOO!" << endl; } 
}; 

이제 동물과 함께 거대한 가방을 가지고 있고 그것을 볼 수 없다고 상상해 보라. 당신은 그 중 하나를 잡고 벽에 던지십시오. 그럼 당신은 그 소리를들을 - 그것이 어떤 종류의 동물을 설명한다 :

set<Animal*> bagWithAnimals; 
bagWithAnimals.insert(new Cat); 
bagWithAnimals.insert(new Cow); 

Animal* someAnimal = *(bagWithAnimals.begin()); 
someAnimal->throwAgainstWall(); 

someAnimal = *(bagWithAnimals.rbegin()); 
someAnimal->throwAgainstWall(); 

당신은 먼저 동물을 잡아 벽에 던져, 당신이 듣고 "야옹!" - 그래, 고양이 야. 그럼 당신은 다음 하나를 잡아, 당신은 그것을 던져, 당신은 "MOOO!" - 그게 암소 야. 그것은 다형성입니다.

또한 Polymorphism in c++

를 확인해야합니다 그리고 당신은 좋은 책을 찾고 있다면, 여기에 EM의 좋은 목록입니다 The Definitive C++ Book Guide and List

+0

고맙습니다. 다형성에서 사용할 수있는 재료가 엄청나다고 말할 때 당신이 자리하고 있습니다. 내가 더 정확하게보고있는 것은 너무하고 배우는 것입니다 (즉, 운동). – LivingThing

+0

@MuhammadSalman : "실험"을 시작하고 연습하기 전에 기본 사항을 이해해야합니다. – LihO

+0

이 책의 문제점은 내가 지금 내 손에 많은 시간을 쓰지 않고, 다형성을 배우기 위해 찾고있는 책인지 다른 책을 시험해 볼 수 없다는 것이다. 몇 권의 책을 읽은 사람들로부터 조언을 받아야합니다.이 책에는 다형성에 대한 최고의 설명이 나와 있습니다. – LivingThing

관련 문제