代码重用-关于c++的类的一点问题

问题描述

关于c++的类的一点问题

忽然想到一个问题,加入定义一个类,有 若干个数据成员int a,int b,int c......定义一个该类的对象数组,根据a,b等的值对这些对象进行排序。因为对不同数据成员进行排序的东西不同,那代码岂不是要写若干个除了a,b,c...之外都相同的?应该怎么做到写一段代码实现不同a,b,c的排序?应该用函数模板吗?还是怎样?本人很渣,求各位指教

解决方案

用函数指针,把比较的代码留给调用者去实现。
参考qsort这个系统函数的实现。

解决方案二:

std sort等有提供一个参数,让你作为比较函数传递in进去,这样你就可以根据你自己的设定实现不同的比较方法来决定排序。
你自己的方法同样可以参考这个,提供一个参数让调用者传递比较函数。

解决方案三:

用成员指针排序吧

解决方案四:

看完再做项目或提问吧.

时间: 2024-11-03 22:21:00

代码重用-关于c++的类的一点问题的相关文章

【C/C++学院】0822-类型转换函数与构造转换函数/类的继承/类的继承以及区别/继承静态成员与静态函数//继承实现代码重用/单继承QT案例/多继承简介以及实战/Gpu编程

类型转换函数与构造转换函数 #include<iostream> class fushu { public: explicit fushu(int num)//避免隐式转换,引发歧义 { x = num; y = num; } void print() { std::cout << x << "+" << y << "i" << std::endl; } operator int(); //不支

使用Attribute+Reflection来提高代码重用

这篇文章两个目的,一是开阔设计的思路,二是实例代码可以拿来就用. 设计的思路来源于<Effective c#>第一版Item 24: 优先使用声明式编程而不是命令式编程.特别 的地方是,希望提供多个属性的默认排序,而不仅仅只根据一个属性,另外一点是,优先调用对象属性 实现了的IComparable<T>接口,如果没有实现接口,才调用IComparable进行比较.排序类实现 泛型,得到类型安全. 总的思路:Attribute用来装饰我们想要获取元数据的类,使用Reflection来

BCB中用Sender参数实现代码重用

面向对象的编程工具的特点之一就是要提高代码重用性(Reuse),宝兰的BCB当然可以实现这一功能.我们都知道,在BCB中,大部分程序代码都直接或间接的对应着一个事件,此程序称为事件处理句柄,它实际上就是一个过程.从应用程序的工程到窗口.组件和程序,BCB强调的是其开发过程中每一层次的重用性,可以充分利用已编写过的代码来减少工作量,更会使你的程序变得优美.代码段间的共享都跟发生该事件的控件有关有关,需要根据控件类型做出相应的处理,这时就要用到Sender参数. 每个函数的开头都有形如: void

MVC 设计模式带来更好的软件结构和代码重用

设计 模型-视图-控制器(MVC)是Xerox PARC在八十年代为编程语言Smalltalk-80发明的一种软件设计模式,至今已被广泛使用.最近几年被推荐为Sun公司J2EE平台的设计模式,并且受到越来越多的使用 ColdFusion 和 PHP 的开发者的欢迎.模型-视图-控制器模式是一个有用的工具箱,它有很多好处,但也有一些缺点. MVC如何工作 MVC是一个设计模式,它强制性的使应用程序的输入.处理和输出分开.使用MVC应用程序被分成三个核心部件:模型.视图.控制器.它们各自处理自己的任

关于asp.net的代码重用

asp.net 在asp.net中我们通过添加组件类来实现代码重用在asp.net项目文件中添加组件类假如为conn.vb打开这个文件,这个文件是public class connend class这样我们有两种方式来进行代码重用一种方式为直接在class中写代码,一种为在外面定义一个namespaces如下(1)Public Class conn        Inherits System.ComponentModel.Component        Dim connstring As S

持久化模式,第 2 部分: 提高代码重用和改进性能

简介 本系列包含两篇文章,第 1 部分 讨论了 Hibernate 和其他对象-关系映射(ORM)工具的几个基本最佳实践.通过使用通用基领域类 和接口.集中的审计和泛型数据访问对象(泛型 DAO),应用程序可以建立更紧凑且可维护的领域模型和持久化层. 通过应用 第 1 部分 中的概念,可以提供新的代码重用机会.在这个部分中,我们首先讨论如何使用 Hibernate 和多态性在领域模型 中集成行为.接下来,继续 第 1 部分 对泛型 DAO 的讨论.在应用程序中集成和使用泛型 DAO 之后,您可能

提高Java代码重用性的三个措施

措施一:改写类的实例方法 通过类继承实现代码重用不是精确的代码重用技术,因此它并不是最理想的 代码重用机制.换句话说,如果不继承整个类的所有方法和数据成员,我们无法 重用该类里面的单个方法.继承总是带来一些多余的方法和数据成员,它们总是 使得重用类里面某个方法的代码复杂化.另外,派生类对父类的依赖关系也使得 代码进一步复杂化:对父类的改动可能影响子类;修改父类或者子类中的任意一 个类时,我们很难记得哪一个方法被子类覆盖.哪一个方法没有被子类覆盖;最 后,子类中的覆盖方法是否要调用父类中的对应方法

“前.NET Core时代”如何实现跨平台代码重用 ——程序集重用

除了在源代码层面实现共享("前.NET Core时代"如何实现跨平台代码重用 --源文件重用)之外,我们还可以跨平台共享同一个程序集,这种独立于具体平台的"中性"程序集通过创建一种名为"可移植类库(PCL: Portable Class Library)"项目来实现.为了让读者朋友们对PCL的实现机制具有充分的认识,我们先来讨论一个被我称为"程序集动态绑定"的话题. 目录 一.何谓程序集动态绑定? 二.程序集一致性 三.程序集

轮播图-如果一个页面有多个轮播,代码重用怎么考虑?

问题描述 如果一个页面有多个轮播,代码重用怎么考虑? 如题!!用的是swiper这个插件 各路大神求解脱啊 还有弱弱问一下 是不是一个页面多个轮播图很怪?? 解决方案 把轮播的代码封装成JS组件的方式. 解决方案二: 这有什么奇怪的,很多新闻和门户网站就有很多组轮播 解决方案三: 做成类的形式,new 实例出来,不用用过程式编程,这个不好控制作用域