C++类与继承复习

虚基类

  --有纯虚函数的类,只能作为基(父)类(接口)去派生子类,不能生成对象(类的实例)

 1 //虚基类作为接口  不能用于产生本类的实例 
 2 class Father{
 3     
 4     public :
 5         virtual void Printf(char *str) = 0;
 6         
 7     private:
 8         char str[50];    
 9         
10     protected:
11         void Set_str(char *mystr)
12         {
13             char i = 0;    
14             while(*mystr!='\0')
15             {
16                 str[i++] = *(mystr++);
17             }
18             str[i] = '\0';    //添加字符串结束标志 
19         }
20         
21         char* Get_str(void)
22         {
23             return str;
24         }    
25 };

  --虚基类的派生(子)类,若要用于生成对象,则派生类要将虚基类中所有的纯虚函数做实现

 1 /*************************************************************************
 2 *@若公有继承, 需要将虚基类的所有虚函数都做具体实现(定义) 
 3 *@若保护继承,则基类的公有成员成为子类的保护成员
 4 *@若私有继承,则基类的公有与保护成员均成为子类的私有成员
 5 *@不论以以上3种的任何一种方式继承,子类均不能访问基类的私有成员
 6 *@类的友元类或友元函数可以访问该类的私有成员 
 7 ************************************************************************/
 8 class Son : public Father{
 9     public:
10          void Printf(char *str);
11          void Re_Printf();//子类自有公有成员函数 
12 };
13 
14 //类外实现 
15 void Son::Printf(char *str)
16 {
17     printf(str);
18 }
19 
20 void Son::Re_Printf()
21 {    
22     Set_str("China NO.1\r\n");    //子类可访问基类的保护成员void Set_str(char *mystr) 
23     printf(Get_str());
24 }

主函数实现及效果

1 int main(int argc, char *argv[])
2 {
3     
4     Son test;    //创建类的实例
5     test.Printf("子类创建的成员,而非继承自基类\r\n");
6     test.Re_Printf(); 
7     return 0;
8 }

 

 总结:

  复习了类,虚基类,派生类,以及类的公有、保护、私有成员的访问权限

posted @ 2020-07-14 20:48  Funky_天晴了  阅读(177)  评论(0)    收藏  举报