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 }

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

浙公网安备 33010602011771号