c++语言
hopegrace
取乎其上,得乎其中;取乎其中,得乎其下;取乎其下,则无所得矣!
展开
-
函数指针的定义与案例使用
函数指针是指向函数的指针变量,即本质是一个指针变量。 int (*pFunction) (int x); /*声明一个函数指针*/ pFunction=func; /*将func函数的首地址赋给指针pFunction*/1.定义指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下:类型说明符(*指针的变量名)(参数) 指针名和指针运算符外面的括号改变了默认的运算符优先级。如果没有圆括号,就变成了一个返回整型指针的函数的原型声...原创 2020-10-24 14:23:18 · 691 阅读 · 0 评论 -
32、再论函数传值中指针和引用的区别
一、回忆前面我们谈到过指针和引用的区别及联系,认识到,指针是一个实体,而引用仅是个别名(绰号);对引用型变量进行除赋值以外的一切操作,相当于对被引用变量进行操作。但是,问题还没有结束,今天我想到一个问题,开始破灭我心中对前面引用的认识。对引用的介绍,见http://blog.163.com/zhoumhan_0351/blog/static/399542272009...原创 2020-02-27 12:30:10 · 126 阅读 · 0 评论 -
48、main函数及其参数
每一C程序都必须有一main()函数,可以根据自己的爱好把它放在程序的某个地方。有些程序员把它放在最前面,而另一些程序员把它放在最后面,无论放在哪个地方,以下几点说明都是适合的。 在TurboC2.0启动过程中,传递main()函数三个参数:argc,argv和env。 *argc:整数,为传给main()的命令行参数个数。*argv:字符串数组。ch...原创 2020-02-24 12:18:49 · 90 阅读 · 0 评论 -
44、算法复杂度简介
数据结构是问题的数学模型。程序设计的实质是对实际问题选择一种好的数据结构,加之设计一个好的算法。算法(解决问题的方法)处理的对象就是数据。算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。程序设计的实质是对实际问题选择一种好的数据结构,加之设计一个好的算法。一、基本概念1、数据:是对信息的一种符号表示——人们利用文字符号、数字符号以及其他...原创 2020-02-23 17:32:22 · 178 阅读 · 0 评论 -
1、面向对象思想的相关概念
一、综述在计算机科学中,对象(Object)通常是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。对象是一个黑盒子,他是用来接收和发送消息;一个对象实体中,通常包括有数据和程序两部分。使用该对象的用户也不需要知道对象中具体的数据和程序情况,只需要了解该对象的接口,及接收什么样的消息和会反馈...原创 2020-02-23 17:28:33 · 327 阅读 · 0 评论 -
2、面向对象的思维(与结构化思维比较)
2.1方法背景结构化思想和面向对象思想虽都产生于20世纪60年代,但它们却存在根本差别。结构化方法承袭了传统的编程思想与编程方法,以计算机的计算功能为前提。编写程序的主要目的是数值计算、问题求解。模块是结构化编程的基本单位,但计算方法(简称为算法)是程序的核心。沃尔森曾提出了一个著名公式:程序=算法+数据结构。结构化方法只是对传统程序结构的改进,用三种基本结构来组织程序,使程序结构更为清晰,...原创 2020-02-23 17:24:50 · 475 阅读 · 0 评论 -
为什么要学习C++?
为什么要学习C++?C++适合做什么样的开发?C++是一门广泛用于工业软件研发的大型语言,具有很高的复杂性和解决问题的能力。C++不仅在开发上极具价值,同时在学术界也就有很高的价值。一个不可否认的现实是,在低阶程序设计领域,C++挤压着C同时也在承受着C的强烈反弹。而在高阶程序设计领域,Java和C#正在不断蚕食着C++的地盘。也许Java和C#的狂潮终将迫使C++回归本位—回到它有着根本性优...原创 2020-02-11 16:41:05 · 1856 阅读 · 0 评论 -
C++编程技巧
来自baidu百科搜索整理,谢谢原作者一、使用new和delete进行动态内存分配和释放 运算符new和delete是C++新增的运算符,提供了存储的动态分配和释放功能。它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点: (1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错...原创 2020-02-11 16:39:31 · 234 阅读 · 0 评论 -
对于写代码的忠告
来自http://baike.baidu.com/view/824.htm?fr=ala0_1_1整理要想不遇到问题,写代码的时候: 1,要对写出来的代码负责。我很佩服那些写代码写100行都不执行一次的高手,如果他们最后不被低级错误困扰的话我就更加的佩服了。我写程序几乎是写一行两行就要执行一次,每句话我都要确保执行效果跟我的预期一致。没错这样写的时候可能慢一些,但是调试的时候很轻松,我可...原创 2020-02-11 16:38:52 · 287 阅读 · 0 评论 -
重构
一、重构的定义 重构:对软件内部结构的一种调整,目的是在不改变"软件之可察行为"前提下,提高其可理解性,降低其修改成本。也就是说修改不影响外部使用程序(程序员),在个外部来看,程序的行为和结果没有任何的变化。重构只是对程序内部结构进行调整,让代码更加容易理解,然后更容易维护。二、重构的好处 能改进软件设计使软件更容易被理解 能帮你找到bug 提高软件的开发速度三、什么时候进行重...原创 2020-02-11 16:37:23 · 240 阅读 · 0 评论 -
C++与C的不同(一)
一、综述前面,我们已经讨论了为什么要学习C++,及面向对象和面向过程思维的区别,今天我们讨论一下C和C++的区别。C与C++的最大区别在于它们的用于解决问题的思想方法不一样,C++比C更加符合软件工程学。C是C++的子集,C实现了C++中过程化控制及其它相关功能,而在C++中的C相对于原来的C还有所加强,引入了重载、内联函数、异常处理等。C++更是拓展了面向对象设计的内容,如类、继承、虚...原创 2020-02-11 16:36:48 · 348 阅读 · 0 评论 -
C++与C的不同(二)
2.6、函数原型函数原型的三个特殊的任务:(1)确定函数返回值,使编译程序能产生的函数返回数据类型的正确代码。(2)确定了函数使用的参数的类型,个数和顺序。(3)函数名代表该函数的函数体以及函数完成的功能。函数的定义格式为:函数原型{函数体}函数原型一般的语法形式为:返回类型函数名(参量表)如果一个函数先使用,而后定义的话,则需要对该函数...原创 2020-02-11 16:36:09 · 136 阅读 · 0 评论 -
C++与C的不同(三)
2.9、枚举名,结构名和联合名都是类型名C++语言中,枚举名,结构名和联合名都是类型名(及类名)。当实例变化时,不必在一个枚举名或结构名之前再加上enum,struct,union(class)。enumTraffic{red,green,yellow};structString{char*str;intlength;};当实例化为变量时,可...原创 2020-02-11 16:35:09 · 134 阅读 · 0 评论 -
C语言精华总结(一)
转自http://zhenguohui.spaces.live.com/blog/cns!9551940217428bc!116.trak一.指针它的本质是地址的类型。在许多语言中根本就没有这个概念。但是它却正是C灵活,高效,在面向过程的时代所向披靡的原因所在。因为C的内存模型基本上对应了现在vonNeumann(冯·诺伊曼)计算机的机器模型,很好的达到了对机器的映射。不过有些人似乎永远也不...原创 2020-02-11 16:33:30 · 419 阅读 · 0 评论 -
C语言精华总结(二)
转自http://zhenguohui.spaces.live.com/blog/cns!9551940217428bc!116.trak三.类型的识别基本类型的识别非常简单:inta;//a的类型是achar*p;//p的类型是char*……那么请你看看下面几个:int*(*a[5])(int,char*);//#1void(*b[10])(void(*)());//#2do...原创 2020-02-11 16:30:23 · 282 阅读 · 0 评论 -
C++基础概念(基本语法)
C++程序的内存格局通常分为四个区:(1)全局数据区(dataarea)存放全局变量、静态数据、常量。(2)代码区(codearea)存放类成员函数、其他函数代码。(3)栈区(stackarea)存放局部变量、函数参数、返回数据、返回地址。(4)堆区...原创 2020-02-10 16:48:32 · 434 阅读 · 0 评论 -
C++基本概念(内联,模板,函数)
1、inlinefunction嵌入到主调函数中的函数称为内置函数(inlinefunction),又称内嵌函数,或内联函数。指定内置函数,只需在函数首行的左端加一个关键字inline即可。可以在声明函数和定义函数时同时写inline,也可以只在其中一处声明inline,效果相同。内置函数中不能包括复杂的控制语句,如循环语句和switch语句,一般少于5句。对函数作inlin...原创 2020-02-10 16:45:17 · 874 阅读 · 0 评论 -
C++基本概念(字符、字符串处理)
一、字符及字符串相关字符串的实际长度(10)与数组长度(12)不相等,在存放上面10个字符之外,系统对字符数组最后两元素自动填补空字符′\0′。charstr[]=″Iamhappy″;charstr[]={″Iamhappy″};与charstr[]={′I′,′′,′a′,′m′,′′,′h′,′a′,′p′,′p′,′y′};的区别。前者的长度为11,后者的长度...原创 2020-02-10 16:41:59 · 1702 阅读 · 0 评论 -
C++基本概念----类和对象
1、相关概念面向对象程序设计方法的一个重要特点就是“封装性”(encapsulation),所谓“封装”,指两方面的含义:一是将有关的数据和操作代码封装在一个对象中,形成一个基本单位,各个对象之间相对独立,互不干扰。二是将对象中某些部分对外隐蔽,即隐蔽其内部细节,只留下少量接口,以便与外界联系,接收外界的消息,这种对外界隐蔽的做法称为信息隐蔽(imformationhidi...原创 2020-02-10 16:36:08 · 422 阅读 · 0 评论 -
16、对象数组,对象指针,常对象、对象的常引用
1、对象数组Studentstud[50];//假设已声明了Student类,定义stud数组,有50个元素在建立数组时,同样要调用构造函数。如果有50个元素,需要调用50次构造函数。在定义对象数组时应当怎样实现初始化呢?在花括号中分别写出构造函数并指定实参。如果构造函数有3个参数,分别代表学号、年龄、成绩。则可以这样定义对象数组:StudentStud[3]={//...原创 2020-02-10 16:34:27 · 490 阅读 · 0 评论 -
友元、静态成员
1、静态成员静态数据成员是一种特殊的数据成员,它以关键字static开头。例如classBox{public:intvolume();private:staticintheight;//把height定义为静态的数据成员intwidth;};如果希望各对象中的height的值是一样的,就可以把它定义为静态数据成员,这样它就为各对象所共有,所有对象...原创 2020-02-10 16:32:14 · 443 阅读 · 0 评论 -
运算符重载
1、基本概念所谓重载,就是重新赋予新的含义。函数重载就是对一个已有的函数赋予新的含义,使之实现新功能。运算符也可以重载。运算符重载是通过定义函数实现的。运算符重载实质上是函数的重载。重载运算符的函数一般格式如下:函数类型operator运算符名称(形参表列){对运算符的重载处理}例如,想将“+”用于Complex类(复数)的加法运算,函数的原型可以是这样的:...原创 2020-02-10 16:29:04 · 657 阅读 · 0 评论 -
关于类型转换函数和转换构造函数的讨论
关于构造函数的讨论:http://blog.163.com/zhoumhan_0351/blog/static/3995422720100250413207/关于类型转换的讨论http://blog.163.com/zhoumhan_0351/blog/static/39954227201001934025333/现在,再引入另一种构造函数转换构造函数1、转换构造函数转换构造函...原创 2020-02-10 16:27:37 · 1088 阅读 · 0 评论 -
继承和派生(一)
1、相关概念在C++中可重用性(softwarereusability)是通过继承(inheritance)这一机制来实现的。一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。从已有的类(父类)产生一个新的子类,称为类的派生。派生类是基类的具体化,而基类则是派生类的抽象。基类名前面有public的称为“公用继承(publicinheritance)”。声明派生类的一般形式...原创 2020-02-10 16:26:17 · 276 阅读 · 0 评论 -
继承和派生(二)
6、虚基类从上面的学习中,我们发现如果一个派生类有多个直接基类,而这些直接基类又有一个共同的基类,则在最终的派生类中会保留该间接共同基类数据成员的多份同名成员。C++提供虚基类(virtualbaseclass)的方法,使得在继承间接共同基类时只保留一份成员。classA//声明基类A{…};classB:virtualpublicA/...原创 2020-02-10 16:13:42 · 360 阅读 · 0 评论 -
多态性与虚函数
在C++程序设计中,多态性(polymorphism)是指具有不同功能的函数可以用同一个函数名,这样就可以用一个函数名调用不同内容的函数。在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)。从系统实现的角度看,多态性分为两类:静态多态性和动态多态性。函数重载和运算符重载实现的多态性属于静态多态性,在程序编译时系统就...原创 2020-02-08 10:39:41 · 505 阅读 · 0 评论 -
输入输出流(一)
1、变量的三种命名方式a.C风格类型_int_number_of_studentb.驼峰表示法numberOfStudent,sizeOfStringc.匈牙利标注法iNumberOfStudent,charName2、引子C++中的输入输出操作由“流”来处理;流:指数据从一个位置流向另一个位置;提取操作:从流中获取数据的操作;插入操作:向流中添加数据的操作;...原创 2020-02-08 10:37:36 · 368 阅读 · 0 评论 -
输入输出流(二)
1、流成员函数1)put和getostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put。如cout.put(′a′);put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式)。可以在一个语句中连续调用put函数。如cout.put(71).put(79).pu(79).put(68).put(′\\n′);putchar...原创 2020-02-08 10:35:30 · 293 阅读 · 0 评论 -
输入输出流(三)
2、文件I/O1)文件的读写操作对于文件的I/O操作可分为按文本(text)方式和按二进制方式两种。A)文本形式(ASCII)如果文件的每一个字节中均以ASCII代码形式存放数据,即一个字节存放一个字符,这个文件就是ASCII文件(或称字符文件)。程序可以从ASCII文件中读入若干个字符,也可以向它输出一些字符。对ASCII文件的读写操作可以用以下两种方法:...原创 2020-02-08 10:33:33 · 218 阅读 · 0 评论 -
C++流类库与C的I/O操作优势比较,文件与流
1、C++流类库和C语言的I/O操作相比:(1)简明与可读性从直观上来看,C++的这种改变使得I/O语句更为简明,增加了可读性。用I/O运算符(提取运算符>>和插入运算符<<)代替不同的输入输出函数名(如printf,scanf等)是一个大的改进。如:printf("n=%d,a=%f\n",n,a);cout<<"n="<<n...原创 2020-02-08 10:30:48 · 943 阅读 · 0 评论 -
贪心算法
贪心算法是一个快速的、不稳定的算法。贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择。虽然贪心算法不能对所有问题都得到整体最优解,但对许多问题它能产生整体最优解。如单源最短路经问题,最小生成树问题等。在一些情况下,即使贪心算法不能得到整体最优解,其最终结果却是最优解的近似(具有不稳定性)。当“贪心序列”中的每项互异且当问题没有...原创 2020-02-08 10:27:42 · 1662 阅读 · 0 评论 -
C++基础笔记(一)
一、一些基础知识点1、赋值构成一个表达式,具有值,其值为赋值符左边表达式的值。表达式和语句的一个重要区别是,表达式有值,而语句没有值。2、隐式类型转换总是朝着表达数据能力更强的方向,并且转换总是逐个运算符进行的。如floatf=3.5;intn=6;longk=21;doubless=f*n+k/2;//在计算ss时,首先将f和n转换成double,算得21,然后计...原创 2020-02-08 10:22:42 · 233 阅读 · 0 评论 -
C++基础笔记(二)
22、友员一个类的成员函数可以是另一个类的友元。整个类也可以是另一个类的友元,访友元称为友类;友类的每个成员函数都可以访问另一个类中的保护或私有数据成员。23、如果虚函数在基类与子类中出现的仅仅是名字相同,而参数类型不同,或返回类型不同,即使写上了virtual关键字,也不进行迟后联编。有一个例外,如果基类中的虚函数返回一个基类指针或返回一个基类引用,子类中的虚函数返回一个子类的指针或子类的...原创 2020-02-08 10:20:32 · 152 阅读 · 0 评论 -
C++基础笔记(三)
32、STL(StandardTemplateLibrary)是一个基于模板的容器类库,包括向量、链表、队列及一些通用的排序和查找算法等。33、转义字符以"\"引导,如“\\”表示“\”等。34、在一个类定义的内部定义一个类,称为嵌套类。嵌套类的成员函数和静态成员可以在包含该类的外部定义,但嵌套灰的作用域在包含该类定义的内部。35、使用异常异常枚举族系1)enumFil...原创 2020-02-08 10:17:59 · 164 阅读 · 0 评论 -
C++发展后期增加的工具
在C++发展的后期,增加了一些功能,作为工具来使用,主要有模板(包括函数模板和类模板)、异常处理、命名空间和运行时类型识别。1997年ANSIC++委员会将它们纳入了ANSIC++标准。1、异常处理程序中常见的错误有两大类:语法错误和运行错误。C++处理异常采取的办法是:如果在执行一个函数过程中出现异常,可以不在本函数中立即处理,而是发出一个信息,传给它的上一级(即调...原创 2020-02-08 10:15:29 · 136 阅读 · 0 评论 -
51、两个小程序
最近看中期试卷,有两个题目,感觉不错,实现了一下,以自娱。1、设一个环上有编号为0~n-1的n粒不同颜色的珠子(每粒珠子颜色用字母表示,n粒珠子的颜色由输入的字符串表示)。将环中某两粒珠子间剪开,环上珠子形成一个序列,然后按以下规则从序列中取走珠子:首先从序列左端取走所有连续同包珠子;然后从序列右端在剩下珠子中取走所有连续同色珠子,两者之和为该剪开处可取走珠子的粒数。在...原创 2020-02-04 13:08:48 · 176 阅读 · 0 评论 -
1、利用面向对象中的多态性实现画圆和画方形的操作
设计模式课,老师要给了我们一个DELPHI程序,要求改写成自己喜欢的语言的程序,说以后所讲的模式将通过在这个例子程序上一点点的添加来体现。而我看不懂DELPHI程序,以前对MFC接触少,也不是很熟悉。在QQ上,宿舍同学和我一起交流了DELPHI程序的分析看法,实验室的学长在VC图形处理上,及MFC的使用上给了我非常有益的指导,开启了我学习MFC的大门,非常感谢学长和室友的帮助。现在将这个小程序...原创 2020-02-04 13:06:28 · 849 阅读 · 0 评论 -
标准 C++ 库
标准的C++不仅包含了全部标准C运行库(在原有库的基础上做了一些必要的增补和修改,以便支持安全类型),而且还增加了一些C++自己的库。这些新增的库比标准的C库功能更强,这些C++库包括:1输入输出流库。2语言支持库:包含从C运行库继承的成分,例如:⑴在<climits>和<cfloat>头文件中声明了C++库对&l...原创 2020-02-04 13:00:39 · 180 阅读 · 0 评论 -
类成员函数参数和类成员变量的可见性
类成员函数参数和类成员变量的可见性一、如下示例#include"iostream"usingnamespacestd;classpoint{public:intx;inty;point(){}point(inta,intb){x=a;y=b;}voidoutput(){cout<<x<<end...原创 2020-02-02 17:43:17 · 505 阅读 · 0 评论 -
函数隐藏和函数覆盖
函数隐藏和函数覆盖1、函数隐藏派生类中函数具有与基类同名的函数(参数列表不一定相同),从而派生类中隐藏了基类的同名函数。2、函数覆盖定义:派生类中函数将基类中的函数覆盖的情况称为函数覆盖。条件:1)基类是虚函数2)发生覆盖的两个函数分别位于基类和派生类中3)函数名和参数列表必须完全相同(虚函数)。函数覆盖总是与多态性相关联。总之,函...原创 2020-02-02 17:41:31 · 1229 阅读 · 0 评论