对于学习继承时的遇到一些问题

来源:互联网 发布:图形图像处理的软件 编辑:程序博客网 时间:2024/06/05 09:52

1.继承时,如果继承方式选用public,则在子类中可以访问父类除了private以外的成员

2.在继承时如果父类没有构造函数,则在子类中不要对父类进行初始化。

  如果在父类中有构造函数,则在子类的构造函数中必须也对父类进行初始化,具体格式如下:

 父类  class Human

 子类 class Student


子类的构造函数如下:Student:Student(int sa):Human(sa)



3.对于父类,子类,孙子类来说,都有构造器,如果调用孙子类的函数,那么首先会初始化,而初始化的顺序是先父类,再子类,随后才是孙子类


4.什么是拷贝构造:

class human//父类

class student; //子类

student s(1,2);

student gg(s);-----这就叫拷贝构造

拷贝构造内部实现-----student ::student(int k,int f)

      {实现内容

}


那么问题来了:

a.如果子类未实现拷贝构造时,那么如何实现student gg(s)?------------此时子类没有,那肯定是要到父类中去找,不管父类是有还是没有,都会调用父类的拷贝构造器。

b.如果子类有拷贝构造器时呢?---------此时就必须显示的去调用父类的构造器,也就是父类不可以用隐士的构造器。



5.对于赋值运算符重载

a.如果子类未实现赋值运算符重载,那么就会去调用父类的重载,无论父类是否有实现。

b.如果子类有赋值运算符重载,那就没必要去调用父类的了,-------这是与拷贝构造的区别,拷贝构造是要对父类的数据也进行处理,所以不管怎么样都得调用父类的,而赋值运算符只是为了将运算符重载,并不涉及到父类,所以是不用看父类的。

0 0
原创粉丝点击