1、“.....然而,面向对象的语言支持不同的方式与不同的结构面向对象的范例。中有个精良的传承符号的基础上的访问修饰符。的区别虚拟的,纯粹的虚拟和非虚拟方法。的使用的类和方法来禁用继承。然而,不支持多重继承。艾菲尔允许重命名继承的方法。在本文中我们提出的些方法公用程式中创建更安全和更灵活的面向对象的系统。我们提出如何与的模板设施的帮助下实施。我们目前的情况下,可以编写更安全的代码,我们构造。关键词,方法,面向对象编程,模板引言面向对象编程仍是最常见的编程范式。它代表企图以使程序更加紧密地塑造人们的思维方式和处理与世界。在编程的旧样式,名程序员面临着些问题,必须确定个计算任务......”。
2、“.....在这种方式中,编程包括找到个指令序列,将完成这项任务。在面向对象的境界,而不是我们找对象实体,有行为的任务,持有信息,并且可以彼此互动。编程由组对象的设计模式的问题。在程序中的软件对象可以代表在问题域的真实或抽象的实体。这是应该使设计方案更自然因此更容易得到正确的和更容易理解。许多编程语言支持的是第语言支持这论断。语言,如,和时下最有名的。艾菲尔已被开发贝特朗迈耶在年,这是也面向对象的语言。脚本语言通常基于面向对象的范例。然而,对于例如当前版本支持的的。事实上,不同的语言支持不同的这种范式结构。这些构造的高度分析和互相比较,因为普及面向对象编程范式,。例如,不具有的每个的超类类,但在类是类层次的根。的区别公共......”。
3、“.....个可以在和写的最后堂课这是不能父。是种多范例编程语言支持面向对象的范例。多重继承是允许的,但没有语言结构最终类,最终方法,或重命名的方法。在基类中的方法是隐藏的,当个方法在派生类中声明的名称相同,但与窗体顶端不同的参数类型和或数量。虽然,这可以避免使用声明,这种情况是奇怪的。提供的模板编写通用的构建函数和类。然而,个新的方向直与这种结构称为模板元编程之间等方面的优势元编程能够在编译时检查的条件。如果失败的条件,可以停止编译过程。然而,在本文中,我们不处理元程序,但我们模板的力量优势。我们作出的努力,使的复杂得多。我们开发的处理的有用的扩展面向对象更复杂的方式,。本文组织如下。方法在,在第节详述......”。
4、“.....发展的最终方法是在第节详细。我们的结果和说明我们在今后的工作在第节。方法这是常见的,在的虚拟签名在基类和派生类的方法不同意。在这虚拟方法不能重写,但隐藏。让我们考虑以下代码片段此输出似乎是奇怪的。问题的根源是虚方法的签名是不完全的在基地和派生类中的相同。有个修饰符在课堂上应尽量避免这种情况。然而,编译器没有消息编译此代码,只他们中的些给予警告。为了克服这种情况我们利用模板设施和预处理用于方便地使用我们的解决方案。首先,我们包装成个成员函数指针模板类,之后,我们创建的测试模板类的实例以前的模板。如果这个测试类检查两个包裹指针可以分配给对方。如果基类和派生类的方法的签名是在完全相同的,那么这个任务正常工作。但是......”。
5、“.....那么这个分配结果编译信息,它不能被转换。,这些宏后,我们开发的宏启动检查此功能。宏调用以前的宏,创建个匿名的命名空间的新方法,称为测试,如果隐藏的方法,它调用测试模板的如果签名的默认构造函数和检查相同,让我们考虑如何才能使用此解决方案禁用在本节第个例子中隐藏的虚拟方法,这个宏必须呼吁在全球空间。如果代码编译,然后签名是在相同的基础和派生类,这意味着虚拟方法的正确使用。这将导致个最小的开销,因为它创建了个全球测试对象,并执行两个任务之间两个成员的三分球在运行时,这是廉价的操作。否则,代码不编译,结果在以下消息在本节中,我们提供了个解决方案,以避免问题隐藏的虚拟方法时出现签名种方法是不样的,在基地和派生类......”。
6、“.....当两种方法继承从不同的基类具有相同的名称,这门语言元素有助于避免在派生类中的模糊性。虽然这是强制性的,在艾菲尔歧,允许我们重新定义这两种方法,次作为个单的方法派生类。它可以发生,但是,这两个基地类代表不同的概念,名称冲突只是巧合。然后,我们可能要重新定义那些在派生类中的语义不同的方法分别只是想,如果他们有没有任何共同之处。通过简单的例子,我们展示了如何重新命名继承的方法,在,从而能够覆盖同样的命名方法分开。设和是我们每个都有个基类方法,,方法在编程语言,它可以声明作为最后的成员函数。这意味着,该成员功能不能在子类中重写。有两个好处第,涉及到程序设计和代码的质量......”。
7、“.....在编程语言,有良好的机制,使函数内联,但没有任何语言的支持,以防止在子类中重写虚拟成员函数。的等。等。提出了种解决方案,以阻止派生类。在本章中,我们展示了解决方案,使个虚成员函数。让我们假设我们有个虚拟成员函数与基类,我们希望它的最终。在休息节中,我们假设是动态创建的对象,因为在的多态性由指针。它作品也通过引用,但我们的解决方案是有限的指针。我们今后的工作之,是把它扩大到作为参考好。首先,我们需要制定出每类对象或的子类必须创建个具体的工厂函数,而不是编写新的。这家工厂功能检查是否函数重写。如果不是,它创建类的新实例,否则会发出编译时消息和编译失败。实现为此,我们有私人经营的新定义在类,并宣布为朋友的工厂函数......”。
8、“.....它描述了成员功能作出最后。见下文第个模板参数是个任意类型,第二个个是适当的成员函数的指针。模板结构的最终检查类是否有不同的成员函数的方法如下原理功能是相同的库提供,而且它的两个模板参数在编译时检查是否是相同的。宏升压的的味精创建个编译时消息时,它的第个参数是假的。第二个参数是信息,第三个拥有种类型的信息,这是不有必要在这里。如果是和子类的成员函数不是在,则是相同的成员功能,从而为两个辅助类有相同的类型。工厂的功能如下,如果它可以创建临时最终对象,这意味着该成员函数是不被覆盖。否则最终构造的的断言味精导致个编译。这些源代码的大部分是由预处理产生宏在下列方式结构,无效的......”。
9、“.....宏集最终无效的,作为最后个成员函数的成员函数。宏的第个参数是类,第二个是功能,第三个什么返回类型,而最后个是参数类型列表。我们提供集预处理宏定义多个成员函数到最后更新,表示成员函数设置到最后这个宏有四个参数列印倍。四,每个成员函数想在前面的例子。下面的例子显示了这个复杂的用法解决方案,,,设置宏创建的具体帮手最终类和工厂功能的成员函数,和Ĥ,我们当前要设定最后更新。该结构乙覆盖结构的个成员函数Ğ和结构也与成员函数表相同。当我们当前要创建个乙的实例,我们得到以下消息出现此信息,因为结构乙覆盖其基类个至少有个最后更新的成员函数成员,因为我们当前可以建立个实例结构ķ是不是最终的功能。结论与未来工作在本文中......”。
1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。
2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。
3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。