“抽象类允许(但不要求)抽象类包含抽象成员”。但是一个抽象类里不写抽象方法就没有意义了,既然如此,还不如直接写个普通类? 在一个抽象类里可以不声明抽象方法,这在语法上是没问题的,但实际来说,这样是没有任何意义的。也就是说,你为什么会选择写一个抽象类呢?当然是为了想某个方法能够被OVERRIDE,以实现多态。
2024-01-25 05:04:29 99KB 抽象类 抽象方法
1
文章是redisUtils工具类的封装,和基于springboot环境的单元测试; 文中封装了redis的众多方法,希望对您有所帮助。
2024-01-22 15:58:05 305KB springboot redisUtils
1
包含获取邮件\发送邮件\搜索邮件功能,下载即用,好用好评,谢谢! 包含获取邮件\发送邮件\搜索邮件功能,下载即用,好用好评,谢谢!
2024-01-21 22:44:22 18KB java javamail 获取邮件
1
Windows下轻量级类MFC图形库 WTL7.0Windows下轻量级类MFC图形库 WTL7.0Windows下轻量级类MFC图形库 WTL7.0
2024-01-18 19:50:46 376KB Windows下轻量级类MFC图形库 WTL7.0
1
2. 利用教材中的Stack类,为其设计外部函数(非成员函数)实现下面delete_all功能,必要时可以使用临时的Stack对象。编写主函数测试delete_all函数,栈元素设定为字符类型即可。 template void delete_all(Stack &s, const T &x)——删除栈s中所有等于x的数据项,保持其他数据项顺序不变。 输入:input.txt,其第一个字符为x,其后按栈底到栈顶的顺序依次给出栈中字符,字符间用空格、回车或制表符间隔,如: a b a t a a e c 表示栈底栈顶内容为b a t a a e c,要删除内容为a 输出:删除后栈中字符内容,从栈顶到栈底的顺序即可,相邻元素间用空格间隔,最后一个元素之后不能有空格。最后输出一个回车。如上例,应为 ――――――――― c e t b ―――――――――――――
2024-01-18 15:22:04 1KB 数据结构 Stack类 delete_all
1
1、A类功放(又称甲类功放) A类功放输出级中两个(或两组)晶体管永远处于导电状态,也就是说不管有无讯号输入它们都保持传导电流,并使这两个电流等于交流电的峰值,这时交流在最大讯号情况下流入负载。当无讯号时,两个晶体管各流通等量的电流,因此在输出中心点上没有不平衡的电流或电压,故无电流输入扬声器。当讯号趋向正极,线路上方的输出晶体管容许流入较多的电流,下方的输出晶体管则相对减少电流,由于电流开始不平衡,于是流入扬声器而且推动扬声器发声。 A类功放的工作方式具有最佳的线性,每个输出晶体管均放大讯号全波,完全不存在交越失真(Switching Distortion),即使不施用负反馈,它的开环路失真仍十分低,因此被称为是声音最理想的放大线路设计。但这种设计有利有弊,A类功放放最大的缺点是效率低,因为无讯号时仍有满电流流入,电能全部转为高热量。当讯号电平增加时,有些功率可进入负载,但许多仍转变为热量。 A类功放是重播音乐的理想选择,它能提供非常平滑的音质,音色圆润温暖,高音透明开扬,这些优点足以补偿它的缺点。A类功率功放发热量惊人,为了有效处理散热问题,A类功放必须采用大型散热器。因为它
2024-01-18 09:53:53 68KB 功率放大器 模拟电路
1
1.本程序文档参考benkaoya提供开源代码编写。 2.封装benkaoya代码中提供的函数成为CIniWR类实现功能功能 3.实现部分参考DEMO 4.修正在VS2005下的部分错误。 主要在GetString函数中VS2005中的严格性出错W_CHAR *问题 修订: wcsncpy((wchar_t *)lpReturnedString, pValue, cchCopied); 原始: //wcscpy((wchar_t *)lpReturnedString,pValue); 原始: //lpReturnedString[cchCopied] = 0; 修订: lpReturnedString = 0; // We're done. 5.此为开源程序,无版权欢迎交流使用 benkaoya : http://hi.csdn.net/benkaoya Mercury : http://hi.csdn.net/xumercury
2024-01-17 22:19:00 2.91MB
1
完美解码是一款能实现各种流行视频、HDTV完美回放及编码的全能型影音解码包,是视频播放/编码爱好者的又一新选择。本软件自带Media Player Classic及The KMPlayer两款流行播放器,支持简、英2种语言平台下安装,推荐安装环境是Windows XP、DirectX 9.0C、Windows Media Player 10/11,不支持Windows9x,如需在Vista系统下使用,请在安装前先关闭Vista的UAC功能。若要和 Realplayer 同时使用,请在安装时不要选择 Real 解码组件,QuickTime类似。迪奥(Dio)安装注意事项:1.安装前请先卸载与本软件功能类似的解码包及播放器,强烈建议在卸载后重新启动Windows系统再进行安装。可与完美解码兼容不必卸载的软件包括:Windows Media Player、PowerDVD 6.5以上、Sonic CinePlayer HD.DVD Decoder v4.2。2.如要支持HD-DVD/BD VC1Remux(TS)和HDre(MKV)的播放,则需安装Sonic CinePlayer HD DV
2024-01-17 15:59:27 61.66MB 多媒体类
1
/*====================================================================================================== 作 者: 许明龙 单 位: 兰州交通大学软件工程专业09级 联 系: 世上没用永远的陌生人,只有还未认识的朋友! QQ:494462498. Tel:13893256491 Email:xuhongming251@163.com 修改时间: 2011-6-5 =======================================================================================================*/ /*======================================================================================================== 如何使用? 1.引入DLL文件,引入头本文件,就已声明了导入函数 //要引入DLL的方法 //1、把SERIALPORTDLL1.dll和SERIALPORTDLL1.lib拷贝到工程目录下 //2、然后在 工程->设置->连接->分类->常规->对象/库模块输入:SERIALPORTDLL1.lib 2.调用Init初始化串口 3.调用SetReceiveFuntion(&ReveveChar);指定接收和处理数据的函数 4.实现void ReveveChar(WPARAM data, LPARAM port)这个函数 5.调用SendData发送数据 6.ClosePort(); ========================================================================================================*/ /*======================================================================================================= 函 数 名: Init 功 能: 打开并初始化串口 参数说明: UINT port //端口号 UINT baud //波特率 char parity = 'N' //校验位,默认为无校验位 UINT databits = 8 //数据位,一个字节的位数,默认为8位 UINT stopbit = 1 //停止位,默认为1位 使用例子: Init(2,9600); //打开串口2,波特率9600,其它值为默认值(无奇偶校验、数据位为8、停止位为1) Init(4,4800,'N',10);//打开串口4,波特率为4800,无奇偶校验,数据位为10,(停止位默认为1) ... ... ======================================================================================================*/ extern "C" __declspec(dllimport) void Init( UINT port, //端口号 UINT baud, //波特率 char parity = 'N', //校验位 UINT databits=8 , //数据位 UINT stopbit=1 //停止位 ); /*========================================================================================================== 函 数 名: SendData 功 能: 向串口发送数据,使用之前必须先调用Init函数初始化串口 参数说明: char data[] //要发送的数据 int datalen //发送数据的长度 使用例子: 例1: char a[] = {0x01,0x03,0x00,0x03,0x00,0x02,0x34,0x0B};//准备要发送的十六进制:01 03 00 03 00 02 34 0B SendData(a,8); //向串口发送十六进制数:01 03 00 03 00 02 34 0B 例2: char a[] = "$01001000020110*" //准备要发送的字符串$01001000020110* SendData(a,16); //向串口发送:$01001000020110* ============================================================================================================*/ extern "C" __declspec(dllimport) void SendData( char data[], int datalen ); /*=================================================================================================================== 函 数 名: SetReceiveFuntion 功 能: 指定接收数据的函数,指定好后,串口接收缓冲区每有一个字节的数据时会自动触发和调用所指定的函数 参数说明: a、参数需要一个函数指针, b、该指针指向一个用于接收数据的函数(该函数由用户自己声明、定义和实现), c、用户定义该函数时必须要满足一下条件: 1、该函数为全局函数 2、返回值为void 3、形参为两个,类型为:形参为UINT,LONG 使用例子: 1、void ReveveChar(WPARAM data, LPARAM port);//声明一个用于接收数据的全局函数,本头文件已默认声明这个函数,用户无需再次声明 2、 CString strTemp; void ReveveChar(WPARAM data, LPARAM port)//实现这个接收数据并处理数据的函数 { static int RecevCount = 0; //用于接收字节数的计数 char str[512] = ""; sprintf(str,"%02x",data); //接收十六进制数,并格式化为字符形式 strTemp += str; RecevCount++; if (RecevCount >= 8) //接收到数据长度等于了协议长度,则开始进行协议的处理 { RecevCount = 0; strTemp = "接收到得数据协议为" + strTemp; AfxMessageBox(strTemp); strTemp = ""; } } 3、SetReceiveFuntion(&ReveveChar);//指定void ReveveChar(WPARAM data, LPARAM port);该函数接收和处理数据 =========================================================================================================================*/ extern "C" __declspec(dllimport) void SetReceiveFuntion(void (*pfCallBack)(WPARAM data, LPARAM port)); /*================================================= 函 数 名: ClosePort 功 能: 关闭由Init函数打开的串口 参数说明: 无需参数 调用例子: ClosePort(); =================================================*/ extern "C" __declspec(dllimport) void ClosePort(); /*=============================================================================================================== 函 数 名: ReveveChar 功 能: 每当串口接收到一个字符(字节)时就会自动触发和调用这个函数, 用户只需实现不必也不能去亲自调用, 注意:打开串口后,必须要调用SetReceiveFuntion(ReveveChar) 参数说明: data //接收到的是串口中的一个字节数据 port //端口号,表明是哪个端口接收到的数据 调用例子: 只要实现,无需自己调用。 实现处理数据可参考如下简单的例子,思想是边接收数据边处理 void ReveveChar(WPARAM data, LPARAM port) { static int RecevCount = 0; //用于接收字节数的计数 char str[512] = ""; sprintf(str,"%02x",data); //接收十六进制数,并格式化为字符形式 strTemp += str; RecevCount++; if (RecevCount >= 8) //接收到数据长度等于了协议长度,则开始进行协议的处理 { RecevCount = 0; strTemp = "接收到得数据协议为" + strTemp; AfxMessageBox(strTemp); strTemp = ""; } } 说明:本函数并非为导出函数,写在这里仅仅是起到声明一个函数的作用,用户也可以删除掉,自己声明和实现! ===============================================================================================================*/ void ReveveChar(WPARAM data, LPARAM port);
2024-01-17 15:05:23 10KB SerialPort SerialPort封装
1
"供应链管理"课程作为一门理论性和实践性都很强的经管类课程,需要创新案例教学思维和方法,建设教学案例库并实现其动态更新。在探究案例教学模式与课程内容体系匹配关系的基础上,文章构建了包括正逆向结合的"引例+实例+案例+创例"的闭环型"3+1"案例教学式体系,设计了"两横一竖"案例教学方法,提出了矩阵型"3+1"模式的案例教学,以期为经管类课程的案例教学模式改革提供参考。
2024-01-17 10:49:35 203KB 行业研究
1