C++
文章平均质量分 84
岩枭
自强不息,厚德载物
展开
-
命名空间的作用及编程举例
学校的人事部门保存了有关学生的部分数据(学号、姓名、年龄、住址),教务部门也保存了学生的另外一些数据(学号、姓名、性别、成绩),两个部门分别编写了本部门的学生数据管理程序,其中都用了Student作为类名。现在要求在全校的学生数据管理程序中调用这两个部门的学生数据,分别输出两种内容的学生数据。要求用c++编程,使用命名空间。解:命名空间是用户命名的作用域,用来处理程序中常见的同名冲突。命名空间::原创 2016-05-29 13:42:23 · 1059 阅读 · 0 评论 -
类型萃取
类型萃取是实现不同类型数据面对同一函数实现不同的操作,它与类封装的区别是:并不用知道所调用的对象是什么类型,类型萃取是编译后知道类型,先实现;而类的封装则是先定义类型,后实现方法。类型分为基本类型(POD),和自定义类型。在这里用模板的特化实现其编程思想:以memcpy为例,当拷贝的是基本类型(POD)时,只用拷贝所传递指针上的数据,如果是string类型,则需要在堆上开辟空间,所传递的指针如果被原创 2016-05-29 13:43:39 · 552 阅读 · 0 评论 -
指针与数组的比较
C++/C 程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组) ,要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变” ,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较指针原创 2016-05-29 13:43:44 · 1633 阅读 · 0 评论 -
函数覆盖及其使用举例
覆盖是指派生类中如果存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致。覆盖函数和被覆盖函数只有函数体不同,当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本。 覆盖的特征为在不同的范围中(分别位于派生类与基类)的函数,函数名字相同,函数参数相同,基类函数必须有virtual关键字,覆盖的示例代码如下:原创 2016-07-22 20:22:22 · 2356 阅读 · 0 评论 -
剑指offer面试题:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。
题目:如下为类型CMyString的声明,请为该类型添加赋值运算符函数。class CMyString{public:CMyString(char* pData =NULL);CMyString(const CMyString& str);~CMyString(void);private:char* pData;};分析:赋值运算符要注意以下四点:1原创 2016-07-17 15:48:08 · 2442 阅读 · 0 评论 -
剑指offer面试题:替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。解析:时间复杂度为O(n)的解法。完整代码及测试用例实现:#includeusing namespace std;#include //length 为字符数组string的总容量原创 2016-08-17 22:15:06 · 392 阅读 · 0 评论 -
static在C和C++里各代表什么含义
转自:http://blog.csdn.net/wanglongfei_hust/article/details/10011503static关键字有三种使用方式,其中前两种只指在C语言中使用,第三种在C++中使用。1. 局部静态变量(C)2. 外部静态变量/函数(C)3. 静态数据成员/成员函数(C++)一、 局部静态变量局部变量按照存储形转载 2016-08-20 21:42:12 · 2907 阅读 · 0 评论 -
new/delete 和malloc/free 的区别
转自:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/16/2593754.html一、基本概念 malloc/free:1、函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指转载 2016-08-20 22:06:15 · 394 阅读 · 0 评论 -
用c++模拟实现一个学生成绩管理系统
题目:用c++模拟实现一个学生成绩的信息管理系统,要求能添加、删除、修改、查看和保存学生的信息等功能源代码如下:#define _CRT_SECURE_NO_WARNINGS#includeusing namespace std;#include#includeclass student{private: student* next;public: char st原创 2016-11-29 15:39:25 · 41373 阅读 · 16 评论 -
题目:C++中两种常用的记录程序运行时间的方法的总结
题目:C++中两种常用的记录程序运行时间的方法的总结方法一:clock()计时函数clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t。在MSDN中,查得对clock函数定义如下:clock_t clock(void) ;简单而言,就是该程序从启动到函数调用占用CPU的时间。这个函数返回从“开启这个程序进程”到“程序中调用cloc转载 2017-03-31 16:33:13 · 598 阅读 · 0 评论 -
小项目:大数的基本运算
大数据运算 开发环境:Visual Studio 2015主要技术:string,C++类项目描述:1.对于计算机不能进行计算的大数据进行处理,让计算机实现大数据的读入、输出和基本运算;2.使用C++类将超过内置类型(long long int)范围的数转换成字符串进行存储,并将存储大数的字符串拆开进行分析,逐位原创 2016-09-16 15:48:13 · 1256 阅读 · 0 评论 -
借鉴快速排序的思想,实现算法将整型数组a[0...n]分成两块,使得第一块元素均大于等于0,第二块的元素均小于0,要求算法原地工作且时间复杂度为O(n)
题目:借鉴快速排序的思想,实现算法将整型数组a[0...n]分成两块,使得第一块元素均大于等于0,第二块的元素均小于0,要求算法原地工作且时间复杂度为O(n)完整代码实现:#includeusing namespace std;void blocks(int* a, int n){ int low = 0, high = n - 1, tmp = 0; while (low原创 2017-11-17 15:15:14 · 1659 阅读 · 0 评论 -
题目:使用VS2015与VS2013 创建C++动态链接库并调用
使用VS2015 创建C++动态链接库并调用,原文链接:http://blog.csdn.net/dearkundy/article/details/73331514转载 2017-12-06 14:24:40 · 3636 阅读 · 0 评论 -
c语言:5种方法;交换两个整数的位置(包括引入第三方变量和不引入第三方变量)
方法一:创建临时变量程序:#include void swap(int *p1, int *p2){ int t = *p1; *p1 = *p2; *p2 = t;}int main(){ int num1 = 2; int num2 = 4; int tmp = 0; printf("num1=%d\n", num1); printf("num2=%d\n", num2); swap(&num原创 2016-05-29 13:34:56 · 6484 阅读 · 0 评论 -
函数的传值调用,传址调用和引用调用分析
函数的传值调用和传址调用在C和C++中都是合法的语法,但是引用调用就只是在C++中合法的。1.传值调用:程序:#includevoid swap(int x, int y){ int tmp = x; x = y; y = tmp;}int main(void){ int a = 1, b = 2; printf("a=%d, b=%d\n", a, b); swap(a, b); printf(原创 2016-05-29 13:43:19 · 3297 阅读 · 0 评论 -
在异常处理中处理析构函数
例1:在异常处理中处理析构函数。程序:#include#includeusing namespace std;class Student{public: Student(int n, string nam)//定义构造函数 { cout num = n; name = nam; } ~Student()//定义析构函数 { cout } void get_data();private:原创 2016-05-29 13:43:16 · 547 阅读 · 0 评论 -
函数的重载定义及应用
函数重载:函数名相同,参数列表不同。注意:重载函数的参数个数,参数类型或参数顺序三者中必须至少有一种不同,函数返回值类型可以相同,也可以不同。例:分别考虑整数、双精度数、长整数求3个数中的最大数。程序:#includeusing namespace std;int main(){ int max(int a, int b, int c); double max(double a, double b原创 2016-05-29 13:42:25 · 3659 阅读 · 0 评论 -
引用的定义、使用及其和指针的区别与联系
引用对一个数据可以建立一个“引用”,它的作用是为一个变量名起一个别名。int a;int &b=a;//使变量b具有变量a的地址注意:1.引用不是一种独立的数据类型,对引用只有声明,没有定义;2.声明一个引用时,必须同时使之初始化,即声明它代表哪一个变量;3.在声明一个引用后,不能再使之作为另一变量的引用int a1,a2;int &b=a1;int &b=a2; (错误)4.不能建立原创 2016-05-29 13:42:39 · 666 阅读 · 0 评论 -
构造函数的定义和构造函数的重载
构造函数:处理对象的初始化,是一种特殊的成员函数,与其他函数不同,不需要用户来调用它,在建立对象时自动执行。注意:(1)每建立一个对象,就调用一次构造函数;(2)构造函数没有返回值,因此也没有类型,作用只是对对象进行初始化;(3)构造函数不需要被用户调用,也不能被用户调用。构造函数的重载:构造函数具有相同的名字,而参数的个数或参数类型不相同。例1 编写一个基于对象的程序,在类中用带参数的构造函数原创 2016-05-29 13:42:42 · 16858 阅读 · 0 评论 -
给出年、月、日,计算该日是该年的第几天
给出年、月、日,计算该日是该年的第几天。解:程序:#includeusing namespace std;int main(){ int sum_day(int , int); int leap(int year); int year,month,day,days; cout cin>>year>>month>>day; cout days = sum_day(month, day); if原创 2016-05-29 13:42:44 · 2554 阅读 · 0 评论 -
用含成员函数的类来实现输入和输出时间
用含成员函数的类来实现输入和输出时间。程序:#includeusing namespace std;class Time{public: void set_time(); void show_time();private: int hour; int minute; int sec;};int main(){ Time t1; t1.set_time(); t1.show_time(); Time原创 2016-05-29 13:42:47 · 2807 阅读 · 0 评论 -
函数模板和类模板的定义和使用
模板是泛型编程的基础。所谓泛型编程就是编写与类型无关的逻辑代码,是一种复用的方式。模板分为函数模板和类模板。函数模板:建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表,这个通用函数就称为函数模板。一般形式:templatetypename T> 通用函数定义注意:关键字typename是类型名,只适用于函数体相同、函数的参数个数相同而类型不同的情况。函数原创 2016-05-29 13:42:53 · 2382 阅读 · 0 评论 -
关键字sizeof及其十大特性
Sizeof是c/c++中的关键字,它是一个运算符,其作用是取得一个对象(数据类型或数据对象)的长度(即占用内存的大小,以byte为单位)。其中类型包括基本数据类型(不包括void)、用户自定义类型(结构体、类)、函数类型。数据对象是指用前面提到的类型定义的普通变量和指针变量(包含void指针)。十大特性:特性0:sizeof是运算符,不是函数;特性1:sizeof不能求void类型的长度;特性2原创 2016-05-29 13:42:56 · 1514 阅读 · 3 评论 -
继承与派生定义及相关程序调用举例
一、面向对象程序设计的特点:抽象,封装,继承,多态性。二、3种成员访问限定符及其继承关系:650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/7E/C7/wKioL1cItPmglf2AAABIbKUEQmA608.png" title="图片1.png" alt="wKioL1cItPmglf2AAABIbKUEQmA608.png原创 2016-05-29 13:42:59 · 645 阅读 · 0 评论 -
将字符串"BASIC"按照相反顺序输出
将字符串"BASIC"按照相反顺序输出。程序1:用cout.put输出单个字符的成员函数put#includeusing namespace std;int main(){ char *p = "BASIC"; int i = 0; for (i = 4; i >= 0; i--) { cout.put(*(p + i)); } cout.put('\n'); system("pause");原创 2016-05-29 13:43:02 · 1147 阅读 · 0 评论 -
ostream类的3个输出流对象cout,cerr,clog区别和使用
ostream类定义了3个输出流对象:cout,cerr,clog。cerr和clog都是标准错误流,其区别是:cerr不经过缓冲区直接向显示器输出信息;clog中的信息存放在缓冲区,缓冲区满后或遇endl向显示器输出。例:求解一元二次方程,若公式出错,用cerr流输出有关信息。解:程序:#include#includeusing namespace std;int main(){ float a原创 2016-05-29 13:43:05 · 3453 阅读 · 0 评论 -
派生类构造函数的定义和使用举例
1.派生类构造函数的一般形式为:派生类构造函数名(总参数表):基类构造函数名(参数表){ 派生类中新增加数据成员初始化语句}2.在建立一个对象时,执行构造函数的顺序是:a.派生类构造函数先调用基类构造函数;b.再执行派生类构造函数本身(即派生类构造函数的函数体)3.在派生类对象释放时,先执行派生类析构函数,再执行其基类析构函数例:定义一个简单的派生类构造函数。解:程序:#include#inc原创 2016-05-29 13:43:07 · 11994 阅读 · 0 评论 -
用于字符输入的流成员函数使用举例
用于字符输入的流成员函数:1.流成员函数get有3种形式:无参数的、有1个参数的、有3个参数的(1)无参get函数其调用形式:cin.get()。用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符,若遇到输入流中的文件结束符,则函数返回值EOF(EOF是在iostream头文件中定义的符号常量,代表-1)。注意:EOF:end of file,!EOF表示读取文件没有结束原创 2016-05-29 13:43:10 · 733 阅读 · 0 评论 -
c++中的异常处理定义和使用方法
异常处理:所谓异常处理就是指对运行时出现的差错以及其它例外情况的处理。C++中处理异常的机制由3部分组成:检查(try),抛出(throw),捕捉(catch)。650) this.width=650;" src="http://s5.51cto.com/wyfs02/M01/7E/FF/wKioL1cPZbSgmPwqAAGMAedw3To083.png" title="图片1.png" alt原创 2016-05-29 13:43:13 · 543 阅读 · 0 评论 -
指纹模式识别算法源码及其测试和应用方法
指纹算法需求指纹特征值生成、比对API库需求:可输出指纹图像。图像格式为bmp,小于等于500DPI,不大于50K。 可输出指纹模板。生成模板需要至少采集几次指纹需说明,建议不超过三次。模板大小不超过1K。模板生成时间不大于1秒。 可输出指纹特征值(可以是非字符串格式)。特征值大小不超过512B。 可输出指纹特征值字符串。字符串为可见字符,长度不超1024。 指纹比对时,支持输入指...原创 2018-08-29 20:53:11 · 23312 阅读 · 14 评论