際際滷

際際滷Share a Scribd company logo
C++
 ~ 螳(virtual)
(Inheritance)
 A 企り B 企るゼ 蟆 覃, A 企る B 企り 讌螻  覈
覃る襯 覓朱る.
 A 螳豌企 企れ    覃る 訖襷  B 企れ 碁 
覃る 譟伎蟆 .
Class A : public
B
  譟郁唄
 IS-A 蟯螻
 HAS-A 蟯螻(覲危旧 覲牛 蟯螻襦 企ゼ )
螳豌 誤 覲
 螳豌 誤 覲
 螳豌伎 譯殊 螳 ロ 誤 覲
企 Person 螳豌 訖襷 , Person   企れ 螳豌企 螳襴 
.
Person * ptr;
ptr=new Person();
螳(Virtual Function)
 virtual れ 語 牛伎 企讌.
 企 襯 る殊企   螳螳 .
 企  語 誤 覲螳 れ襦 螳襴る 螳豌企ゼ 谿語^ 語 
蟆一
 螳&豢 企
  螳
  覈語牡螳 讌  
 0  襯 牛   .
 豢 企
  伎 覃る襯  螳襦 誤 企るゼ 螳襴.
 螳豌 煙 覿螳ロ 企る朱 覩碁ゼ 讌.
ろ(Polymorphism)
 襦蠏碁 語伎 螳 れ れ 襭  蟆 螳 煙
int main(void)
{
First *ptr=new First();
ptr->SimpleFunc();
delete ptr;
ptr=new Second();
ptr->SimpleFunc();
delete ptr;
return 0;
}
ptr 谿語^ 螳豌伎 襭 るゴ蠍
覓語 ろ蟆郁骸 るゴ蟆 .
螳 覃語(Virtual Destructor)
 ろ煙 伎伎 襷 誤磯ゼ 覃誤 , 覃語螳 virtual襦  讌 
覃 覿覈 企れ 覃語螳 語 .
 Delete 一一  誤 覲 襭 蟯  覈 覃語螳 語
伎 .
class First{
public:
virtual ~First(){  }
}
class Second: public First{
public:
virtual ~Second(){}
}
class Third:public Second{
public:
virtual ~Third(){}
}
int main(void)
{
First *ptr=new Third();
delete ptr;
}
virtual ~Third(){}
virtual ~Second(){}
virtual ~First(){}
1
2
3
れ
  伎 企るゼ   蟆 襷.
class One{ public: void SimpleOne(){cout<<One<<endl;} };
class Two{ public : void SImpleTwo(){cout<<Two<<endl;} };
class Multi : public One, protected Two{
public:
void Complex(){ SimpleOne(); SimpleTwo(); }
};
int main(void){
Multi mul;
mul.Complex();
return 0;
}
One
Two
れ  覈語
  蠍一 企れ 狩 企 覃る螳 譟伎 蟆曙一 覓語螳 覦  
.
  企 伎 覃る 企襷朱 蠏殊 覿螳ロ蠍 覓.
 企 企れ   語 讌 覈襯 牛 願屋 螳ロ.
螳 (Virtual Inheritance)
 企れ  螻殊 螳 企り  覯 伎  覿  覈
 蟆 覦讌蠍   蟆
 螳 企り軌  覯 伎  企るゼ 螳朱 讌覃  蟲譟
 覈 覯 る朱 れ  覯襷 觚 螳豌企ゼ 燕蟆  蟆
Base
One Two
Three
One Two
Three
Base

More Related Content

C++ inherit virtual

  • 2. (Inheritance) A 企り B 企るゼ 蟆 覃, A 企る B 企り 讌螻 覈 覃る襯 覓朱る. A 螳豌企 企れ 覃る 訖襷 B 企れ 碁 覃る 譟伎蟆 . Class A : public B
  • 3. 譟郁唄 IS-A 蟯螻 HAS-A 蟯螻(覲危旧 覲牛 蟯螻襦 企ゼ )
  • 4. 螳豌 誤 覲 螳豌 誤 覲 螳豌伎 譯殊 螳 ロ 誤 覲 企 Person 螳豌 訖襷 , Person 企れ 螳豌企 螳襴 . Person * ptr; ptr=new Person();
  • 5. 螳(Virtual Function) virtual れ 語 牛伎 企讌. 企 襯 る殊企 螳螳 . 企 語 誤 覲螳 れ襦 螳襴る 螳豌企ゼ 谿語^ 語 蟆一
  • 6. 螳&豢 企 螳 覈語牡螳 讌 0 襯 牛 . 豢 企 伎 覃る襯 螳襦 誤 企るゼ 螳襴. 螳豌 煙 覿螳ロ 企る朱 覩碁ゼ 讌.
  • 7. ろ(Polymorphism) 襦蠏碁 語伎 螳 れ れ 襭 蟆 螳 煙 int main(void) { First *ptr=new First(); ptr->SimpleFunc(); delete ptr; ptr=new Second(); ptr->SimpleFunc(); delete ptr; return 0; } ptr 谿語^ 螳豌伎 襭 るゴ蠍 覓語 ろ蟆郁骸 るゴ蟆 .
  • 8. 螳 覃語(Virtual Destructor) ろ煙 伎伎 襷 誤磯ゼ 覃誤 , 覃語螳 virtual襦 讌 覃 覿覈 企れ 覃語螳 語 . Delete 一一 誤 覲 襭 蟯 覈 覃語螳 語 伎 . class First{ public: virtual ~First(){ } } class Second: public First{ public: virtual ~Second(){} } class Third:public Second{ public: virtual ~Third(){} } int main(void) { First *ptr=new Third(); delete ptr; } virtual ~Third(){} virtual ~Second(){} virtual ~First(){} 1 2 3
  • 9. れ 伎 企るゼ 蟆 襷. class One{ public: void SimpleOne(){cout<<One<<endl;} }; class Two{ public : void SImpleTwo(){cout<<Two<<endl;} }; class Multi : public One, protected Two{ public: void Complex(){ SimpleOne(); SimpleTwo(); } }; int main(void){ Multi mul; mul.Complex(); return 0; } One Two
  • 10. れ 覈語 蠍一 企れ 狩 企 覃る螳 譟伎 蟆曙一 覓語螳 覦 . 企 伎 覃る 企襷朱 蠏殊 覿螳ロ蠍 覓. 企 企れ 語 讌 覈襯 牛 願屋 螳ロ.
  • 11. 螳 (Virtual Inheritance) 企れ 螻殊 螳 企り 覯 伎 覿 覈 蟆 覦讌蠍 蟆 螳 企り軌 覯 伎 企るゼ 螳朱 讌覃 蟲譟 覈 覯 る朱 れ 覯襷 觚 螳豌企ゼ 燕蟆 蟆 Base One Two Three One Two Three Base

Editor's Notes

  • #4: 朱 覓苦 螳 企る 螳ロ 郁煙 讌.