正文

<C++语言命令详解>第八章:继承C++的优越性2005-08-27 08:45:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/InnoLux/4192.html

分享到:

继承的定义方式CLASS Derived_class : PUBLIC Base_class { declarations };,public是对基类的访问标志符,但也可以是protected或private。     继承时,必须先包含基类的声明文件。     在派生类里,可以重载基类里的函数,如果要用基类里的函数,必须在前加作用域符,否则系统认为是在用派生类中重载的函数。     一般来将,当编译器读到一个函数名时,它按照下步骤寻找函数来源:1、在定义成员函数时出现的函数名,编译器首先检查该名称是否在类里进行了声明,如果发现了此声明,就使用这个声明过的函数;2、如果编译器没有在类里找到函数的生命,下一步它将在基类里寻找此函数的声明(依级别进行);3、如果函数名称没在类的派生层次里声明过,编译器将检查它是不是全局函数。     注:如果一个函数在派生类里被重载,这个函数通常被定义为虚函数。     protected访问权限的成员,可以在类的作用域和它的派生类里被读写,但此范围之外受到保护。     基类构造函数:C++总试图调用基类的构造函数来创建新的对象,而如果没指定基类构造函数,编译器就会调用派生类的缺省构造函数。所以,在调用派生类的缺省构造函数之前,派生类里继承基类的成员已经被初始化了一次。而且,如果基类的成员是私有的,则派生类根本无法进行初始化工作,因为它不能读写继承而来的私有成员。解决方法就是在派生类的构造函数里指定合适的基类构造函数,语法格式为:class::class( arglist1 ):base_class( arglist2 ) { statements } ,(arglist2从arglist1里选择合适的参数)这样就只要执行一次初始化。     如果不进行类型转换,C++是不允许把一种类型的指针赋值给另外一种类型的指针的,但允许程序员用基类类型的指针指向派生对象(单向)。此时,如果基类里有个函数被派生类重载,则编译器假设调用的是基类的函数而非派生类的函数。解决方法:虚函数可以作延迟判断,因为这种延迟只可能虚函数接受,虚函数使用了延迟绑定,即在引用函数时并不将其绑定在内存里一个实函数的地址上,而是在运行的时候才决定其准确地址。

阅读(3785) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册