대상 절편 개체 슬 라이 싱


전송 주소:http://blog.sina.com.cn/s/blog_3c6889fe0100tzq8.html
 
파생 대상 을 기본 대상 에 게 부여 할 때 대상 절단 이 발생 한다.(또한 기본 대상 으로 파생 대상 을 강제 전환 하 는 것 도)
 
 
그러면 우 리 는 실례 를 살 펴 보고 대상 절편 이 무엇 인지 진정 으로 이해 합 니 다. 코드 는 다음 과 같 습 니 다. Thiking In C + + 에서 따 옵 니 다.
#include    
#include    
using namespace std;   
class Pet {   
    string pname;   
public:   
    Pet(const string& name) : pname(name) {}   
    virtual string name() const { return pname; }   
    virtual string description() const {   
        return "This is " + pname;   
    }   
};   
class Dog : public Pet {   
    string favoriteActivity;   
public:   
    Dog(const string& name, const string& activity)   
        : Pet(name), favoriteActivity(activity) {}   
    string description() const {   
        return Pet::name() + " likes to " +   
            favoriteActivity;   
    }   
};   
void describe(Pet p) { // Slices the object   
    cout < 
  

 

Slice ,Dog d :

after Slice , Pet vptr,Dog favoriteActivity 。

 

, d p , d p p,d p 。 d p , vptr。

d vptr p vptr :p.vptr = d.vptr, 。 d vptr p , 。

,main describe , Dog d , Pet , , describe Pet p , , Dog d 。 , ,p.description() Pet description 。 , ( , )。

 

, Pet description , , , describe Pet 。 , , 。

좋은 웹페이지 즐겨찾기