在C++中,Windows类中的Sort方法将成为ListBox类中Sort方法的基础方法,在期望调用Windows类中的Sort方法时,ListBox类中的Sort方法就会被调用。在C#中,虚拟函数总是被认为是虚拟调度的根。也就是说,一旦C#发现一个虚拟的方法,就不会再在虚拟链中查找其他虚拟方法。假如ListBox再次被编译,编译器就会生成一个警告信息:
创新互联是一家集网站建设,宝山企业网站建设,宝山品牌网站建设,网站定制,宝山网站建设报价,网络营销,网络优化,宝山网站推广为一体的创新建站企业,帮助传统企业提升企业形象加强企业竞争力。可充分满足这一群体相比中小企业更为丰富、高端、多元的互联网需求。同时我们时刻保持专业、时尚、前沿,时刻以成就客户成长自我,坚持不断学习、思考、沉淀、净化自己,让我们为更多的企业打造出实用型网站。
- "class1.cs(54,24): warning CS0114: 'ListBox.Sort()' hides
- inherited member 'Window.Sort()'.
要使当前的成员覆盖原来的方法,就需要添加override关健字,或者添加new关健字。要消除警告信息,编程人员必须搞清楚他想干什么。可以在ListBox类中的Sort方法前添加new,表明它不该当覆盖Window中的虚方法:
- public class ListBox : Window {
- public new virtual void Sort() {"}
这样就可以清除警告信息。假如编程人员确实期望覆盖掉Window中的方法,就必须使用override关健字来显性地表明其意图。
- Employee::Employee(int theAge, int theSalaryLevel):
- Person(theAge) // 初始化基础类
- salaryLevel(theSalaryLevel) // 初始化成员变量
- {
- // 构造器的代码
- }
C#中的初始化与C++中不同。假设有一个带有private性质的成员变量age的Person类,Employee是由继续Person类而生成的,它有一个private性质的salaryLevel成员变量。在C++中,我们可以在Employee的构造器的初始化部分初始化salaryLevel,如下面的代码所示:
- Class Employee : public Person
- { // 成员变量的定义
- private salaryLevel = 3; // 初始化
- }
这种方法在C#中是非法的。尽管仍然可以初始化基础类,但象上面的代码那样对成员变量初始化就会引起编译错误。在C#中,我们可以在定义成员变量时的同时对它进行初始化注重:必须明确地定义每个变量的访问权限。
但看了无数篇阐述C++复杂性的文章,和争论C++复杂性的吐沫星子(包括我前段时间写的两篇关于C++的总结)。我始终都有一个感觉——没分析透,就跟盲人摸象一样。正如“Why C++”的一位读者批评的,我在文章里面没有写明到底哪些是C++的“非本质复杂性”。#t#
当然,我自己凭感觉就能知道,而接触C++一段时间的人大致也能知道,但新手乃至非新手则对我所谓的“非本质复杂性”根本没有一个具体的认识,这就使得那篇“Why C++”脱离了原本的意图——面向所有C++使用者和学习者。
文章名称:深度了解C++编程技巧说明介绍
本文地址:http://www.csdahua.cn/qtweb/news39/119739.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网