2.2孙鑫C++

1、继承

 动物有 吃 睡 呼吸的方法 当然 鱼也有    不用重复再定义

  1)public 那里都可以访问

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     void eat()//吃方法
 6     {
 7     cout<<"animal eat "<<endl;
 8 
 9     }
10     void sleep()//睡觉方法
11     {
12         cout<<"animal sleep"<<endl;
13     }
14     void breathe()//呼吸方法
15     {
16         cout<<"animal breathe"<<endl;
17     }
18 };
19 class Fish: public Animal//  //子类
20 {
21 
22 
23 };
24 
25 void main()
26 
27 {
28     Animal an;
29     an.eat();
30     Fish fh;
31     fh.sleep();
32 }
View Code

  2)protected 只有子类能访问   外部其他的都不能被访问

    

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     void eat()//吃方法
 6     {
 7     cout<<"animal eat "<<endl;
 8 
 9     }
10 protected:
11     void sleep()//睡觉方法
12     {
13         cout<<"animal sleep"<<endl;
14     }
15     void breathe()//呼吸方法
16     {
17         cout<<"animal breathe"<<endl;
18     }
19 };
20 class Fish: public Animal//  //子类
21 {
22     void test()
23     {
24         sleep();
25         breathe();
26     }
27 
28 };
29 
30 void main()
31 
32 {
33     Animal an;
34     an.eat();
35     Fish fh;
36     fh.sleep();
37 }
View Code

  3)private 只有自己能访问 ,子类 外部都不能访问

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     void eat()//吃方法
 6     {
 7     cout<<"animal eat "<<endl;
 8 
 9     }
10 protected:
11     void sleep()//睡觉方法
12     {
13         cout<<"animal sleep"<<endl;
14     }
15 private:
16     void breathe()//呼吸方法
17     {
18         cout<<"animal breathe"<<endl;
19     }
20 };
21 class Fish: public Animal//  //子类
22 {
23     void test()
24     {
25         sleep();
26         breathe();
27     }
28 
29 };
30 
31 void main()
32 
33 {
34     Animal an;
35     an.eat();
36     Fish fh;
37 //    fh.sleep();
38 }
View Code

  4)访问特性

  

 

    最多为public继承

2、继承的先后性

  没有父亲 就没有孩子

  1)基类 子类 构造函数的调用顺序

         动物先

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal()
 7     {
 8         cout<<"Animal construct "<<endl;
 9     }
10     void eat()//吃方法
11     {
12     cout<<"animal eat "<<endl;
13 
14     }
15 //protected:
16     void sleep()//睡觉方法
17     {
18         cout<<"animal sleep"<<endl;
19     }
20 //private:
21     void breathe()//呼吸方法
22     {
23         cout<<"animal breathe"<<endl;
24     }
25 };
26 class Fish: public Animal// 继承特性 //子类
27 {
28 public:
29     Fish()
30     {
31         cout<<"Fish construct "<<endl;
32     }
33 
34 };
35 
36 void main()
37 
38 {
39 //    Animal an;
40 //    an.eat();
41     Fish fh;
42 //    fh.sleep();
43 }
View Code

  2)基类 子类 析构函数的调用顺序

    鱼先

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal()
 7     {
 8         cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12         cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         cout<<"animal breathe"<<endl;
28     }
29 };
30 class Fish: public Animal// 继承特性 //子类
31 {
32 public:
33     Fish()
34     {
35         cout<<"Fish construct "<<endl;
36     }
37     ~Fish()
38     {
39         cout<<"Fish deconstruct "<<endl;
40     }
41 };
42 
43 void main()
44 
45 {
46 //    Animal an;
47 //    an.eat();
48     Fish fh;
49 //    fh.sleep();
50 }
View Code

  

3、继承出错:没有对象的基类  子类初始化  基类没有初始化  且基类有参数

   子类只能初始化无 参数的  基类

  错误:无 缺省的 基类可条用

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal(int height , int weight)
 7     {
 8         cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12         cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         cout<<"animal breathe"<<endl;
28     }
29 };
30 class Fish: public Animal// 继承特性 //子类
31 {
32 public:
33     Fish()
34     {
35         cout<<"Fish construct "<<endl;
36     }
37     ~Fish()
38     {
39         cout<<"Fish deconstruct "<<endl;
40     }
41 };
42 
43 void main()
44 
45 {
46 //    Animal an;
47 //    an.eat();
48     Fish fh;
49 //    fh.sleep();
50 }
View Code

  解决:象基类中传递参数   Fish():Animal(400,300)

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal(int height , int weight)
 7     {
 8         cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12         cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         cout<<"animal breathe"<<endl;
28     }
29 };
30 class Fish: public Animal// 继承特性 //子类
31 {
32 public:
33     Fish():Animal(400,300)
34     {
35         cout<<"Fish construct "<<endl;
36     }
37     ~Fish()
38     {
39         cout<<"Fish deconstruct "<<endl;
40     }
41 };
42 
43 void main()
44 
45 {
46 //    Animal an;
47 //    an.eat();
48     Fish fh;
49 //    fh.sleep();
50 }
View Code

  4)常量初始化

  

 1 class Fish: public Animal// 继承特性 //子类
 2 {
 3 public:
 4     Fish():Animal(400,300),a(1)
 5     {
 6 //        cout<<"Fish construct "<<endl;
 7     }
 8     ~Fish()
 9     {
10 //        cout<<"Fish deconstruct "<<endl;
11     }
12 private :
13     const int a;
14 };
View Code


4、函数的覆盖

  1)不要基类的

  父亲结婚:花轿

  儿子击婚:轿车

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal(int height , int weight)
 7     {
 8     //    cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12     //    cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         cout<<"animal breathe"<<endl;
28     }
29 };
30 class Fish: public Animal// 继承特性 //子类
31 {
32 public:
33     Fish():Animal(400,300),a(1)
34     {
35 //        cout<<"Fish construct "<<endl;
36     }
37     ~Fish()
38     {
39 //        cout<<"Fish deconstruct "<<endl;
40     }
41     void sleep()
42     {
43         cout<<"jjjjjjjjjj"<<endl;
44     }
45 private :
46     const int a;
47 };
48 
49 void main()
50 
51 {
52 //    Animal an;
53 //    an.eat();
54     Fish fh;
55     fh.sleep();
56 }
View Code


  1)两个都要

  父亲结婚:花轿

  儿子击婚:轿车 花轿

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal(int height , int weight)
 7     {
 8     //    cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12     //    cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         
28         cout<<"animal breathe"<<endl;
29     }
30 };
31 class Fish: public Animal// 继承特性 //子类
32 {
33 public:
34     Fish():Animal(400,300),a(1)
35     {
36 //        cout<<"Fish construct "<<endl;
37     }
38     ~Fish()
39     {
40 //        cout<<"Fish deconstruct "<<endl;
41     }
42     void sleep()
43     {
44         Animal::sleep();
45         cout<<"jjjjjjjjjj"<<endl;
46     }
47 private :
48     const int a;
49 };
50 
51 void main()
52 
53 {
54 //    Animal an;
55 //    an.eat();
56     Fish fh;
57     fh.sleep();
58 }
View Code


5、对象转换

  类型转换

  int--char 丢失精度  截掉了三个字节

     char--int  ok 允许

  对象转换:

    内存模型相同才能转换

输出的是 动物的 而不是 鱼的

 1 #include <iostream.h>
 2 class Animal //类 基类
 3 {
 4 public:
 5     
 6     Animal(int height , int weight)
 7     {
 8     //    cout<<"Animal construct "<<endl;
 9     }
10     ~Animal()
11     {
12     //    cout<<"Animal deconstruct "<<endl;
13     }
14     void eat()//吃方法
15     {
16     cout<<"animal eat "<<endl;
17 
18     }
19 //protected:
20     void sleep()//睡觉方法
21     {
22         cout<<"animal sleep"<<endl;
23     }
24 //private:
25     void breathe()//呼吸方法
26     {
27         
28         cout<<"animal breathe"<<endl;
29     }
30 };
31 class Fish: public Animal// 继承特性 //子类
32 {
33 public:
34     Fish():Animal(400,300),a(1)
35     {
36 //        cout<<"Fish construct "<<endl;
37     }
38     ~Fish()
39     {
40 //        cout<<"Fish deconstruct "<<endl;
41     }
42     void sleep()
43     {
44         Animal::sleep();//作用域标示符
45         cout<<"jjjjjjjjjj"<<endl;
46     }
47 private :
48     const int a;
49 };
50 void fn(Animal *pAn)
51 {
52     pAn->sleep();
53 }
54 void main()
55 
56 {
57 //    Animal an;
58 //    an.eat();
59     Fish fh;
60     Animal *pAn;
61     pAn=&fh;
62     fn(pAn);
63 //    fh.sleep();
64 }
View Code
原文地址:https://www.cnblogs.com/TFH-FPGA/p/3192398.html