
C++
文章平均质量分 64
Hurlan
十年之后,你会成为怎样的人
展开
-
switch...case... 语句
switch case语句的使用:使用switch语句直接处理多个分支(当然包括两个分支).其一般形式为:switch(表达式){ case 常量表达式1:语句1; break;case 常量表达式2:语句2; break; ……case 常量表达式n:语句n; break; default:语句n+1; break;}原创 2014-03-27 19:22:55 · 2969 阅读 · 0 评论 -
对象简介
面向对象(Object Oriented,简称OO) 其实单词Object更直观的翻译应该是物体。世界就是由各种物体组成的,比如某一辆汽车、某一个人、某一个杯子等等,这些都可以看作对象。 任何一个对象往往有一些具体的属性,比如某汽车的品牌、型号、排量,某人的性别、身高、体重,某杯子的口径,材质等等。任何一个对象往往能进行一些操作,比如汽车可以开动、拐弯,人可以走路、原创 2014-04-03 12:39:06 · 893 阅读 · 0 评论 -
C++点滴(2)
优秀程序员不得不知道的20个位运算技巧 http://blog.youkuaiyun.com/daiyutage/article/details/8578324浅析为什么char类型的范围是 —128~+127 http://blog.youkuaiyun.com/daiyutage/article/details/8575248warning C4101: 'months' : unreference原创 2014-03-13 22:26:20 · 923 阅读 · 0 评论 -
const总结
一、Const作用 如下表所示:No.作用说明参考代码1可以定义const常量 const int Max = 100; 2便于进行类型检查const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行转载 2014-04-18 20:03:54 · 1027 阅读 · 0 评论 -
指针总结
C++ 指针初学者必看要了解指针,多多少少会出现一些比较复杂的类型,其实要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,其原则: 从变量名处起,根据运算符优先级结合,一步一步分析。 int p; //这是一个普通的整型变量int *p; //首先从P处开始,先与*结合,所以说明P是一个指针,然后再与转载 2014-04-18 20:09:47 · 784 阅读 · 1 评论 -
this指针
this指针:1. this指针的用处: 一个对象的this指针并不是对象本身的一部分,不会影响sizeof(对象)的结果。this作用域是在类内部,当在类的非静态成员函数中访问类的非静态成员的时候,编译器会自动将对象本身的地址作为一个隐含参数传递给函数。也就是说,即使你没有写上this指针,编译器在编译的时候也是加上this的,它作为非静态成员函数的隐含形参,对各成员的访问原创 2014-04-18 19:46:19 · 1120 阅读 · 0 评论 -
头文件相关
头文件(Header File): 头文件的使用主要体现在两个方面,一个是重用(即多次使用),另一个是共用。 类似于标准库函数,在头文件里面应该模块化地给出一些函数或功能。另外还应该包括独立实现这些函数或功能的常量、变量和类型的声明。//shape.hstruct circle{ double r;};//shape.cppconst dou原创 2014-04-01 17:53:35 · 800 阅读 · 0 评论 -
程序调试
调试(Debug)主要分四个步骤和两种处理方式。程序的编译和连接统称为编译阶段,程序的运行和测试统称为运行阶段。在编译阶段发生的错误称为编译错误(Compile Error),在运行阶段发生的错误称为运行时错误(RuntimeError)。对于编译错误,可通过检查并修正语法错误来解决;对于运行时错误,可通过检查并修正语意(程序设计思想)错误来解决。 由于编译器是按原创 2014-04-02 12:30:13 · 1283 阅读 · 0 评论 -
类简介
数据类型是各个变量的归类,而变量则是某个数据类型的具体表现,因此称变量为数据类型的一个实例(instance)。各个变量都有他们的属性:内容和占用内存空间等等;各个变量都有他们的操作:算术运算或逻辑运算等等。从这个角度来看,类和对象的关系就如同数据类型和变量的关系。不妨将类看作一种自定义的数据类型,那么对象就是一种属于该类型的变量。 类的定义:class Name{ p原创 2014-03-19 12:45:09 · 775 阅读 · 0 评论 -
链表
链表:struct node{ int data; node* next;}; 这个结构有两个成员数据,一个是整数data,另外一个是指向这种结构的指针next。那么若干个这样的结构变量,就能把这些变量连接成一条链子。 这些利用结构指针连接起来的结构变量称为链表(Link List),每一个结构变量(相当于链条中的每个原创 2014-03-31 12:12:32 · 1258 阅读 · 0 评论 -
基本类型
类型大小数值范围无值型void0 byte无值域布尔型bool1 bytetrue(非0值) false(0)有符号短整型short [int] /signed short [int]2 byte-32768(-2^15) ~ 3276原创 2014-03-13 23:54:54 · 1002 阅读 · 0 评论 -
C++点滴(1)
C++实现读取文件数据:在C++中,有一个stream类,所有的I/O都以这个“流”类为基础的,包括文件的I/O,stream这个类有两个重要的运算符:1、插入器( 向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情原创 2014-02-24 19:13:52 · 1364 阅读 · 0 评论 -
共用体
共用体(union)的定义类似结构体,且同样能够存储不同类型的数据。不过共同体的所有成员都在同一段内存中存放,起始地址一样,并且同一时刻只能存储其中的一个成员变量 由于共用体同一时刻只能存储一个值(覆盖技术),因此它必须有足够的空间来存储最大的成员。结构体变量所占长度是各成员占的内存长度之和,每个成员分别占有自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。原创 2014-03-30 23:45:44 · 1218 阅读 · 0 评论 -
结构体
C++中有一种数据类型称为结构(Structure)类型,它允许用户自己定义一种数据类型,并且把描述该类型的各种数据类型一一整合到其中。 定义一种结构类型的语法格式为: struct 结构类型名 { 数据类型 成员数据1; 数据类型 成员数据2;原创 2014-03-30 23:22:33 · 857 阅读 · 0 评论 -
枚举
C++中有一种数据类型称为枚举(Enumeration)类型,它允许用户自己来定义一种数据类型,并且列出该数据类型的取值范围。 定义枚举类型的语法格式为: enum 类型名{常量0,常量1,……,常量n-1}; 定义枚举类型的位置应该在程序首次使用该类型名之前,否则程序无法识别该类型。枚举类型中列出的常量称为枚举常量。它并不是字符串也不是原创 2014-03-30 21:40:24 · 828 阅读 · 0 评论 -
函数简介
函数(function)如果有一个现成求正弦值的函数,就不必自己去构造一个这样的函数。求正弦值的函数是可以多次使用的,并且可以求出任意实数的正弦值(合适的情况下),但是它却求不出一个虚数的正弦值(不合适的情况下)。包含(include)一个头文件,就是使用该头文件中的标准库(Standard Library)函数。 函数的声明(函数原型):返回值类型 函数名(参数列表); (原创 2014-03-28 00:23:23 · 779 阅读 · 0 评论 -
引用简介
一、引用简介 引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。 引用的声明方法:类型标识符 &引用名=目标变量名; 【例1】:int a; int &ra=a; //定义引用ra,它是变量a的引用,即别名说明:(1)&在此不是求地址运算,而是起标识作用。(2)类型标识符是指目标变量的类型。(3)声明引用时,必须同时对其进行初始化。(4原创 2014-04-03 19:09:28 · 1054 阅读 · 0 评论 -
预编译
预编译:常用的预编译指令为:(1)包含指令 #include(2)条件指令 #if、#elif、#else、#endif、#ifdef、#ifndef(3)定义指令 #define、#undef 头文件卫士:头文件卫士的目的是要保护嵌套的包含指令中的内部链接属性的名称不被重复定义。#ifndef __A__#define __A__struct Date原创 2014-04-18 19:09:58 · 788 阅读 · 0 评论 -
继承
例子: 学生是一个抽象的概念,具体的有小学生、初中生、高中生等。任何一个学生都具有姓名、身高、体重、性别等属性。而不同阶段的学生在学习时,内容会有所不同。 为了描写小学生、初中生、高中生,可以写三个不同的类,但是会造成部分属性和功能的重复开发。也可以先设计一个学生类,描述出各种学生的共同属性或功能,然后再针对不同种类的学生做细节的修改。显然,第二种做法更为合理。原创 2014-04-11 12:32:40 · 966 阅读 · 0 评论 -
临时4
临时4原创 2014-04-11 12:22:09 · 1668 阅读 · 0 评论 -
多态
在使用继承的时候,子类必然是在父类的基础上有所改变。如果两者完全相同,这样的继承就失去了意义。同时,不同子类之间具体实现也是有所区别的,否则就出现了一个多余的类。不同的类的同名成员函数有着不同的表现形式,称为多态性。多态性是符合人的认知规律的,即称呼相同,所指不同。 多态性往往只有在使用对象指针或对象引用时才体现出来。编译器在编译程序的时候完全不知道对象指针可能会指向哪种对象(引原创 2014-04-11 13:15:43 · 869 阅读 · 0 评论 -
临时5
临时5原创 2014-04-11 12:22:27 · 888 阅读 · 0 评论 -
临时3
临时3原创 2014-04-11 12:21:46 · 2228 阅读 · 0 评论 -
临时2
临时2原创 2014-04-11 12:21:26 · 744 阅读 · 0 评论 -
操作符重载
在C++中,操作符也是可以重载的,同一操作符对于不同的自定义数据类型可以进行不同的操作。 声明一个操作符重载的语句格式为:返回值类型 operator 操作符(参数列表); 在声明和定义操作符重载时需要注意以下几点:一、操作符只能是C++中存在的一些操作符,自己编造的操作符是不能参与操作符重载的。另外,“::”(域解析操作符)、“.”(成员操作符)、“ ?原创 2014-04-05 22:25:15 · 1227 阅读 · 0 评论 -
while 语句
当不知道循环要进行几次,只知道循环结束的条件时可使用while语句。while语句的具体语法格式:while (循环继续的条件){ 语句;}由于while循环是在循环语句块之前判断是否继续循环,所以又被称为“当型循环”。使用循环来查找结果的方法称为穷举法。 do...while语句:先执行一次语句,再判断是否继续执行(第一次循环一定能执行)。语法格式是:原创 2014-03-27 22:17:43 · 1263 阅读 · 0 评论 -
临时1
临时1原创 2014-04-18 19:12:29 · 875 阅读 · 0 评论 -
友元
类具备封装和信息隐藏的特性。只有类的成员函数才能访问类的私有成员,非成员函数能够访问类中的公有成员,但是假如将数据成员都定义为公有的,这又破坏了隐藏的特性。另外,应该看到在某些情况下,特别是在对某些成员函数多次调用时,由于参数传递,类型检查和安全性检查等都需要时间开销,而影响程序的运行效率。 为了解决上述问题,提出一种使用友元的方案。友元是一种定义在类外部的普通函数,但需要在类体内进行说明,原创 2014-04-05 16:47:47 · 982 阅读 · 0 评论 -
静态成员
由于内存的空间有限,我们常常关心已经使用掉了多少内存空间。显然,我们需要一个计数器。每生成一个对象,计数器就加一;每消除一个对象,计数器就减一。 静态成员数据: 将生成对象的个数记为count,它不是某一个对象所具有的属性,而应该是整个类所具有的属性,或者说它是所有对象的共有属性。 count要能被任何一个结点使用,但事实上无论有多少个结点,count只原创 2014-04-04 16:32:08 · 997 阅读 · 0 评论 -
构造函数
构造函数: 构造函数是一种随着对象创建而自动被调用的函数,它的主要用途是为对象做初始化。 构造函数的声明与定义: 在C++中,规定与类同名的成员函数就是构造函数。需要注意的是,构造函数应该是一个公有的成员函数,并且构造函数没有返回值类型(没有返回值类型不是指void类型)。带参数的构造函数: 函数的特征之一就是能够在调用时带上参数原创 2014-04-03 20:21:35 · 843 阅读 · 0 评论 -
析构函数
构造函数(Constructor):随着对象的创建而自动被调用 析构函数(Destructor):随着对象的消亡而自动被调用 析构函数是一种随着对象消亡而自动被调用的函数,它的主要用途是释放动态申请的资源。它没有返回类型,没有参数,也没有重载。析构函数的函数名也是指定的,是在构造函数名之前加一个“~”符号。原创 2014-04-04 14:25:32 · 1749 阅读 · 0 评论 -
C-串
在C++中,有两种字符串,一种是从C沿袭过来的,称为C—字符串,简称C—串。C—串为用双引号括起来的,以一个全0位(整数0)字节作为结束符的字符序列。C—串的空间长度为字符串长度加1。C—串的类型为char*(const char*)(字符指针),表示C—串的起始地址。(输出字符指针就是输出C—串,所以输出时从起始地址开始,直到遇到0为止)原创 2014-04-17 19:42:47 · 1120 阅读 · 0 评论 -
指针简介
在C++中,也可以给内存中的数据创建“快捷方式”,即为指针(Pointer)。它和整型、字符型、浮点型一样,是一种数据类型。指针也是一种变量,在内存中也有地址。指针中存储的并不是所要调用的数据本身,而是所要调用的数据在内存中的地址。 同变量的数据类型类似,指针也有类型。之所以指针会有类型,是为了符合对应的变量或常量数据类型。不同指针类型的本质在于不同的操作。一个字符型数据在内存中原创 2014-03-29 16:39:56 · 904 阅读 · 0 评论 -
函数的默认参数
默认参数: 在C++中,可以为参数指定默认值。在函数调用时没有指定与形参相对应的实参时, 就自动使用默认参数。#includeusing namespace std;void create(int n=100); //在函数声明中定义默认参数int main(){ create(); //默认实参为100 create(5); //人工设原创 2014-03-29 15:13:38 · 1465 阅读 · 0 评论 -
内存空间
数组的存储空间必须在程序运行前申请,即数组的大小在编译前必须是已知的常量表达式。空间申请得太大会造成浪费,空间申请得太小会造成数据溢出而使得程序异常。所以,为了解决这个问题,需要能够在程序运行时根据实际情况申请内存空间。 在C++中,允许在程序运行时根据自己的需要申请一定的内存空间,将其称为堆内存空间(Heap)。 获得堆内存空间: 用操作符new来动态原创 2014-03-29 23:04:36 · 1057 阅读 · 0 评论 -
指针与函数
向函数传递数组是将指针作为参数的特殊形式。 由于指针可以直接操作内存中的数据,所以它可以用来修改实参,这个功能和引用是类似的。指针和引用虽然都能够修改实参,但是指针却更加危险。因为引用仅限于修改某一个确定的实参,而指针却可以指向内存中的任何一个数据,通过间接引用就能够在一个函数内修改函数外甚至系统中的数据了。 为了避免指针作为函数参数导致数据被意外修改,可原创 2014-03-29 17:26:54 · 730 阅读 · 0 评论 -
STL之iterator
除了使用下标来访问vector等对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。 标准库为每一种标准容器(包括vector)定义了一种迭代器类型。迭代器类型提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。因为迭代器对所有的容器都适用,现代C原创 2014-02-19 13:43:41 · 1997 阅读 · 1 评论 -
STL之map
1、map简介 map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。map提供了很好的一对一关系,在一些程序中建立一个map可以起到事半功倍的效果。 2、map的功能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。 根据原创 2014-02-18 14:48:44 · 1124 阅读 · 0 评论 -
STL之queue
queue(队列)是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(back)进行插入操作。进行删除操作的端称为队头,进行插入操作的端称为队尾。队列中没有元素时,称为空队列。 queue 模板类的定义在头文件中。与stack 模板类很相似,queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为dequ原创 2014-02-18 17:00:29 · 725 阅读 · 0 评论 -
STL之bitset
bitset(位集):有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值。位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法。标准库提供了bitset类使得处理位集合更容易一些。要使用bitset类就必须要包含相关的头文件(#include)。 bitset 的定义和初始化 类似于vector,bitset类是一种类模板;而与vec原创 2014-02-18 19:49:33 · 851 阅读 · 0 评论