C++学习手记(二)——类的继承与派生
陈根发
由于类与对象的存在,使得C++变得具有更强大的生命力,这也是C++产生的原因之一。但是C++面对对象的魔力到底在那呢?昨天开始我逐渐感觉出来了!那就是类三大特性——封装,继承和多态,下面我就学习学习继承吧! 类具有强大的继承与派生功能,使得使用C++的程序员可以大大提高程序代码的重用率,举个例子说明: 还是以“我”为一个类。 Class me{ Private: Char Name[10]; Int age; Char sex; } 当我要申明一个“他”的类时,因为那些数据成员都是相同的,所以我们完全可以利用“我”来做基类,派生出“他”,派生的申明方法为 class 派生类名:派生方式 基类名{ //派生类的数据成员和成员函数
}; //注意,要以 ;结束 那么派生方式主要又有那些呢?一是私有派生,关键字为 private,二是公有派生,关键字为public 。那么,两种不同的继承方式有会有什么不同结果呢?还是先看一个例子吧! #include<iostream.h> class base{ int x; public : void setx (int n) {x=n;} void showx() {cout <<x<<endl;} }; class derived:private base{ int y; public: void setxy(int n,int m) {setx(n); y=m;} void showxy() {cout<<x<<y<<endl;} //非法,私有派生类不能直接引用基类的私有成员 }; main() { derived obj; obj.setxy(10,20); obj.showxy(); return 0; } 运行错误!VC++提示的错误信息为error C2248: 'x' : cannot access private member declared in class 'base' see declaration of 'x' 这到底是怎么回事呢?只是因为私有派生类不能直接引用基类的私有成员。C++对派生的规定是: 在公有派生情况下,基类中的所有成员的访问特性在派生类中维持不变;在私有派生情况下,基类中的所有成员在派生类中也成为私有成员。 这就是出错的原因,由于x 是基类中是私有成员,在私有派生中,基类中的私有成员不能被派生类成员访问。我们只要在出错的地方改为: showx();cout<<y<<endl; 这下我们就可以看到结果: 10 20 不知道我是不是写的很明白,自己认为,现在应该可以得出类的继承和派生特性: 1. 在私有派生中,基类中的私有成员在派生类中私有继承。所有的公有成员都只能成为私有派生类的私有成员,这些成员可以被派生类的成员函数使用,但是基类中的私有成员不允许被派生类的成员函数使用。 2. 在公有派生中。基类成员的可可访问性在派生类中维持不变! 3. 在公有派生情况下,基类中的所有成员的访问特性在派生类中维持不变;在私有派生情况下,基类中的所有成员在派生类中也成为私有成员。 好了,继承与派生就到这里吧。明天我要学习类的多态了。
———————————————————————————————————— 为做一个百分百的程序员而奋斗! 个人说明:农民的儿子,或者说就是农民!二○岁以前过着平庸的生活,二○岁 以 后也不想传奇。 穷是二十年的主打歌,劣质的大衣,带洞的牛仔,不是卖酷,而是现实所逼。一年吃的饭<=365*2。1.5元一餐占80%。2.5元一餐占19.9%,大餐偶尔(6元以上),都是同学聚会,或是生活补贴发放之时! 郁闷时抽烟,袋烟!(城里人没有见过),3.5元一斤,烟起之时,举室皆惊,顾及旁人兄弟,不敢常抽。 偶尔喝酒,不求醉否,只求尽兴!每喝,兄弟代付酒钱! 爱好写,或是代码,或是心情文字,或是打油诗,即兴则书,从不收藏(代码例外)。 自小在将军县长大,耳染目睹,有所感染。兄弟有难,总是一马当先,加上乡下孩子吃苦耐劳,所以很少会输。 自认颇具毅力,50元第一次出远门,为了我的大学;200元逛厦门,为了生计;徒步20公里,为了省2元公交。 娱乐的主要活动是上网,不喜欢玩游戏,不喜欢耍MM,经常发帖。网友甚少,有则知心。 喜欢三句话,都是网友所赐: 1. 上天不会辜负任何人,你付出多少,就会得到多少!(自我安慰) ——herry 2. 事业第一,爱情第二(自我勉励) ——阿当 3. 只要过程正确,结局一定会好(自我警告) ——陈忠 2003-12-23

|