C/C++
文章平均质量分 69
Dark_Song
一个没有昨天的人
展开
-
C/C++常用标准库函数
标准的C++库中的内容主要包括: (1)基本运行时语言支持(2)C语言标准库 (3)字符串和输入输出流(4)标准容器和算法 (5)对数制计算的支持》数学函数 数学函数在头文件中被声明,调用前应在源程序文件中加入预处理命令:#include (1)三角函数原创 2017-04-23 19:57:54 · 5816 阅读 · 0 评论 -
C++子类型关系
公有继承时,派生类的对象可以作为基类的对象处理,派生类是基类的子类型。 子类型关系使得在需要基类对象的任何地方都可以使用公有派生类的对象来替代,从而可以使用相同的函数统一处理基类对象和公有派生类对象(形参为基类对象时,实参可以是派生类对象),大大提高了程序的效率。子类型关系是实现多态性的重要基础之一。 子类型关系定义: #有原创 2017-04-22 17:10:07 · 4299 阅读 · 1 评论 -
C++多继承与虚基类
》多继承中的二义性问题 在派生类中对基类成员的访问应该是唯一的。但是,在多继承情况下,可能造成对基类中某个成员的访问出现了不唯一的情况,这时就称对基类成员的访问产生了二义性。 示 例:class base1{public: void fun();};class base2{public: void fun();};class derive原创 2017-04-22 15:29:26 · 1304 阅读 · 0 评论 -
C++派生类的构造函数和析构函数
派生类不仅继承了基类的成员,还添加了新的成员进行了功能的扩充。因此在建立派生类的实例对象时,不仅要初始化派生类对象的基类成员,还要对派生类的新增成员进行初始化。但由于基类的构造函数和析构函数不能被继承,因此派生类构造函数必须负责调用基类构造函数,并对其所需要的参数进行设置。同样,对派生类对象的清理工作也需要加入新的析构函数。》派生类的构造函数 派生类的数据成员由所有基原创 2017-04-22 14:57:13 · 831 阅读 · 0 评论 -
C++继承和派生
继承是面向对象程序设计的一个重要特性,是软件复用的一种形式,它允许在原有类的基础上创建新的类。新类可以从一个或多个原有类中继承函数和数据,并且可以重新定义或增加新的数据和函数,从而形成类的层次或等级。 继承改变了过去传统的非面向对象程序设计中对不再适合要求的用户自定义数据类型进行改写甚至重写的方法,克服了传统程序设计方法对编写出来的程序无法重复使用而造成资源浪费的缺点。通过C++语原创 2017-04-21 20:31:53 · 343 阅读 · 0 评论 -
C++对象数组和成员对象
》对象数组 对象数组是指数组元素为对象的数组,该数组中的每一个元素都是同一个类的对象。 定义格式: [].... 例:date dates[5]; 使用对象数组成员的格式: []. 例:dates[0].year原创 2017-04-20 20:16:04 · 4173 阅读 · 0 评论 -
C++友元函数和友元类
》友元 类具有封装数据和隐藏的特性,只有类的成员函数才能访问类的私有成员和保护成员,外部函数只能访问类的共有成员。但在某些情况下,需要在类的外部访问类的私有成员和保护成员。这时,如果通过公有成员函数进行访问,由于参数传递、类型检查和安全性检查等需要时间上的开销,将影响程序的运行效率。为了解决这个问题,引入友元。 友元可以在类外部直接访问类的私有成员和保护成员,提高了原创 2017-04-20 19:59:52 · 824 阅读 · 0 评论 -
C++中数组的基础知识
》数组 数组(Array)是由固定数目元素组成的数据结构,同一数组的所有元素的类型都相同。数组元素是通过下标进行访问的。数组可以是一维的,也可以是多维的,许多重要应用的数据结构都是基于数组的。 >一维数组 一维数组是由具有一个下标的数组元素组成的数组,其定义形式:原创 2017-04-17 12:35:35 · 2880 阅读 · 1 评论 -
C++常成员
虽然数据隐藏保证了数据的安全性,但各种形式的数据共享却又不同程度地破坏了数据的安全性。因此,对于既需要共享有需要防止改变的数据应该定义为常量进行保护,以保证它在整个程序运行期间是不可改变的。这些常量需要使用const修饰符进行定义。const关键不仅可以修饰类对象本身,也可以修饰类对象的成员函数和数据成员,分别称为常对象、常成员函数、常数据成员。 》常对象原创 2017-04-20 16:16:30 · 712 阅读 · 0 评论 -
C++静态成员
对于类中的非静态数据成员,每一个类对象都拥有一个副本,即每个对象的同名数据成员可以分别存储不同的数值,这是保证每个对象都拥有区别于其他对象的特征的需要。而类中的静态成员则是解决同一个类的不同对象之间的数据和函数共享问题的。 静态成员的特性是不管这个类创建了多少个对象,它都只有一个副本,这个副本由所属于这个类的对象共享。这种共享与全局变量或全局函数相比,既没有破坏数据隐藏的原则,又保原创 2017-04-20 16:14:38 · 386 阅读 · 0 评论 -
C++虚函数与多态性
》多态性的概念 一个面向对象的系统常常要求一组具有相同基本语义的方法能在同一接口下为不同的对象服务,这就是多态性(polymorphism)。与传统的面向过程的高级语言相比,C++不但提供了固有的多态性,还提供了实现自定义多态性的手段。多态性使得不同的但又具有某种共同属性的对象不但能在一定程度上共享代码,而且还能共享接口。这就大大提高了系统的一致性、灵活性和可维护性。原创 2017-04-22 17:27:16 · 1123 阅读 · 0 评论 -
C++运算符重载
》运算符函数与运算符重载 运算符重载是计算机语言固有多态性的体现。例如在大多数语言中,运算符“ - ”既表示两数相减,又表示取一个数的相反数;既可针对整型数据,又可针对实型、指针等其他类型的数据。C++语言进一步拓展了运算符重载的概念:它不但提供固有的重载,而且还提供重载的手段。 C++把重载的运算符视为特殊的函数,称为运算符函数。运算符重载就是函数重载的一种特原创 2017-04-22 19:04:33 · 723 阅读 · 1 评论 -
C++struct结构
“结构”是一种构造类型,它是由若干“成员”组成的。 每一个成员可以是一个基本数据类型或者又是一个构造类型。 结构即是一种“构造”而成的数据类型, 那么在说明和使用之前必须先定义它,也就是构造它。如同在说明和调用函数之前要先定义一样。 定义一个结构的一般形式为: struct {原创 2017-04-23 19:37:35 · 576 阅读 · 0 评论 -
C++有格式和无格式输入输出
》有格式输入输出 格式化输入输出时操作的文件都是纯文本文件。针对文件的格式化输入输出与针对标准设备cin和cout的输入输出十分相似。 示 例: 要求输出一个两位以内整数的平方根表,但要求精确到小数点后6位,并将表输出到一个文件中。#include#include#includeusing namespace std;int main原创 2017-04-23 16:57:18 · 2185 阅读 · 0 评论 -
C++文件流状态的判别与定位
》文件流状态的判别 可以用文件流对象的下列成员函数来判别文件流的当前状态: # is_open():判定流对象是否与一个打开的文件相联系,若是,返回true,否则返回false # good():刚进行的操作成功时返回true,否则返回false # fail():与good()相反,刚进行的操作失败时返回true,否则返回f原创 2017-04-23 16:29:51 · 1730 阅读 · 0 评论 -
C++文件流的建立与关闭
文件流以磁盘文件以及其他可按文件方式进行管理的外部设备作为输入输出对象。ifstream是文件输入流类,ofstream是文件输出流类,fstream是文件输如输出流类。要利用这些类来定义文件流对象,必须在程序的开始部分包含预处理命令: #include》文件流的建立 每个文件流都应与一个打开的文件相联系: (1)在建立文件流对象的同时打开文件:原创 2017-04-23 15:55:58 · 6559 阅读 · 0 评论 -
C++输入输出的格式控制2
》对齐方式的控制 初始的对齐方式为右对齐,可以改变这一设置,使得输出采用左对齐方式或内部对齐方式。对齐方式的设置一直有效,直到再次设置对齐方式时为止。只有在设置了宽度的情况下,对齐操作才有意义。 有关操作符: # left:在设定的宽度内左对齐输出,右端使用设定的填充字符填满。 等价函数调用:0.setf(ios_ba原创 2017-04-23 15:09:09 · 310 阅读 · 0 评论 -
C++输入输出的格式控制1
》默认的输入输出格式 在没有特地进行格式控制的情况下,输入输出采用默认格式。 >默认的输入格式 C++流所识别的输入数据的类型及其默认的输入格式: # short 、int 、long(signed 、unsigned):与整型常量同 # float 、double原创 2017-04-23 13:17:22 · 8125 阅读 · 0 评论 -
C++流的基础知识
》C++流的体系结构 C++为实现数据的输入输出定义了一系列的流类,这些类之间的派生、继承关系如上图所示。这些类中的一部分是用模板实现的,途中用细线框表示。图中的虚线表示模板类与模板类实例的关系。 要利用C++流,必须在程序中包含有关的头文件,以便获得相关流类的声明。为了使用新标准的流,相关头文件的文件名中不得有扩展名。 与原创 2017-04-23 12:33:47 · 618 阅读 · 0 评论 -
C++类模板
类模板就是一系列相关类的模型或样板,这些类的成员组成相同,成员函数的源代码形式相同,所不同的只是所针对的类型(成员的类型以及成员函数的参数和返回值的类型)不同。对于类模板,数据类型本身成为了它的参数,因而是一种参数化类型的类,是类的生成器。类模板中声明的类称为模板类。 示 例:#include#include#include //使用库函数exit()using n原创 2017-04-23 11:45:28 · 933 阅读 · 0 评论 -
C++函数模板
》函数模板 函数模板是一系列相关函数的模型或样板,这些函数的源代码形式相同,只是所针对的数据类型不同。对于函数模板,数据类型本身成了它的参数,因而是一种参数化类型的函数。声明一个函数模板的格式是: template> 其中的由一个或多个组成,多个之间用逗号隔开。每个具有下面几种形式: # typena原创 2017-04-22 20:59:02 · 341 阅读 · 0 评论 -
C++中的基本控制结构
》C++语句 语句是C++程序中的基本功能单元。任何一条C++语句都会为完成某项任务而进行相关的操作。C++语句通常以分号作为结束标志。 >声明语句:用于对程序中的各种实体进行声明、定义及初始化。 >表达式语句:用于对程序中的数据进行具体操作和处理。 >选择语句:用于实现程序的选择结构。 >循环语句:用于实现程序的循环原创 2017-04-16 15:08:57 · 2991 阅读 · 0 评论 -
C++this指针
C++提供了一个特殊的对象指针-----this指针,它是成员函数所属对象的指针,它指向类对象的地址。成员函数通过这个指针可以知道自己属于哪一个对象。 this指针是一个隐含的指针,它隐含于每个类的非静态成员函数中,它明确地表示出了成员函数当前操作的数据所属的对象。当一个对象调用成员函数时,编译程序先将对象的地址赋值给this指针,然后调用成员函数。每次成员函数存取数据成员时,会原创 2017-04-19 16:39:03 · 476 阅读 · 0 评论 -
C++自由存储对象
到目前为止,在为程序中定义的对象分配内存空间时采用的都是“静态存储方式”,在编译时就确定了所占存储空间的大小,而与之相对的动态存储分配技术则可以保证在程序运行过程中按照实际需要申请适量的内存,使用结束后再进行释放。这种在程序运行过程中根据需要可以随时建立或删除的对象称为自由存储对象。建立和删除工作分别由运算符new和delete完成。 用new创建单个对象时,要根据参数调用相应的构原创 2017-04-19 16:31:06 · 477 阅读 · 0 评论 -
C++中引用的基础知识
》引用 引用是个别名,建立时须用另一个数据对象(如一个变量)的名字进行初始化,以指定该引用所代表的数据对象。此后,对引用的任何操作实际上就是对所代表的数据对象的操作。系统不会为引用再次分配存储空间。 在类型名后面跟引用运算符“ & ”,以及引用名来创建一个引用。引用名就是一个变量名。 例: int i=1;原创 2017-04-17 20:36:52 · 588 阅读 · 0 评论 -
C++中用冒泡排序算法对一个数组中的元素进行排序
》冒泡排序法可以形象地描述为:使较小的值像空气泡一样逐渐“上浮”到数组的顶部,而较大的数值逐渐“下沉”到数组的底部。这种排序技术要排好几轮,每一轮都要比较连续的数组元素对。如果某对数值是按升序排列,那就保持原样。如果按降序排列,就交换它们的值。 例:#includeusing namespace std;void bubble(int v[],int size);int原创 2017-04-17 15:26:18 · 12614 阅读 · 0 评论 -
C++中指针的基础知识
》指 针 即指针变量,与其他类型变量一样,指针变量也必须要先声明。一般形式: *; 其中,是指针所指对象的类型,在C++中指针可以指向任何C++类型。是指针变量名。 指针使用两种特殊的运算符 *和&。 一元(单目)运算符&用于返回其操作对象的内存地址,其操作对象通常为一个变量名。原创 2017-04-17 16:00:47 · 552 阅读 · 0 评论 -
C++中变量的基础知识
C++中变量的基础知识,变量的生存周期与作用域,变量的存储类型,typedef类型说明原创 2017-04-09 16:41:44 · 548 阅读 · 0 评论 -
C++运算符和表达式的基础知识
C++里运算符和表达式的概念、运算类型与运算符、赋值运算、算术运算符和算术表达式、关系运算符和关系表达式、逻辑运算符和逻辑表达式、位运算、条件运算符、逗号运算符、sizeof运算符、运算符的优先级和结合性。原创 2017-04-09 21:16:12 · 695 阅读 · 0 评论 -
位运算
“&”与 按位与运算符、“|”或 按位或运算符、“^”异或 按位异或运算符原创 2017-04-06 20:45:24 · 264 阅读 · 0 评论 -
C++中的常量的基础知识
C++中的字符常量,转义字符,整型常量,实型常量,枚举常量的基础知识原创 2017-04-09 14:33:17 · 1859 阅读 · 0 评论 -
C++中的基本数据类型及派生类型
》逻辑型 逻辑型用关键字bool表示,因此又称为bool型(布尔型)。逻辑型的取值只包含true和false,他们都是C++关键字。其中true对应整数1,表示逻辑真;false对应整数0,表示逻辑假。 》字符型 字符型用关键字char表示,因此又称为char型。字符型的取值范围是全部基本字符以及ASCII码集或扩充ASCII码集对应原创 2017-04-09 13:39:31 · 5974 阅读 · 0 评论 -
C++语言的基本符号与词汇
C++编程语言中的基本符号、关键字、标识符、字面常量、运算符、标点符号。原创 2017-04-09 13:02:05 · 18108 阅读 · 2 评论 -
C++中动态存储分配的基础知识
到目前为止,程序中用于存储数据的变量和数组等实体在使用前都必须通过声明语句进行定义。C++编译器根据这些声明语句了解它们所需存储空间的大小,并预先为其分配适当的内存空间。也就是说,这些变量或数组在内存中所占据的空间大小必须在编译时(即程序运行前)确定下来,这种内存分配方式称为“静态存储分配”。 但是在很多情况下,程序中所需的内存数量只有等到运行时刻才能确定下来。例如,需要在程序运原创 2017-04-17 20:55:53 · 652 阅读 · 0 评论 -
C++中函数的基础知识
》函数 函数(function)是一个可以独立完成某个功能的语句块。C++程序其实就是由一系列的函数组成。main函数是其中的一个函数,C++程序从main函数开始执行。函数的主要作用是将复杂程序拆成若干易于实现的子程序。另外将程序中重复实现的功能封装到一个函数中,这样即提高了程序的开发效率,也提高了程序的可靠性,同时也极大地增强了程序的可读性。 在C++中,函原创 2017-04-18 13:35:38 · 917 阅读 · 0 评论 -
C++构造函数和析构函数
类是一种用户自定义的类型,声明一个类对象时,编译程序要为对象分配存储空间,进行必要的初始化。在C++中,由构造函数来完成。与构造函数对应的是析构函数,当撤销类对象时,析构函数回收存储空间,并做一些善后工作。构造函数和析构函数都属于类,既可以由用户提供,也可以由系统自动生成。 >构造函数的定义 构造函数的作用是在对象被创建时利用特定的值构造对象,将对象初始原创 2017-04-19 15:36:33 · 383 阅读 · 0 评论 -
C++类的基础知识
类是面向对象程序设计的核心,是通过抽象数据类型方法实现的一种用户自定义数据类型,它同时包含了数据和对数据进行操作的函数。利用类可以实现数据的封装和隐藏。类是对某一类对象的抽象,而对象是某一种类的实例。 >类的定义 类的定义可以分为两部分:说明部分和实现部分。说明部分说明类中包含的数据成员和成员函数,实现部分是对成员函数的定义。 类定义的原创 2017-04-19 14:31:30 · 534 阅读 · 0 评论 -
用C++编写的SOCKET服务端与客户端代码实例
服务端:#include "winsock2.h" #pragma comment(lib, "ws2_32.lib") #include <iostream> using namespace std; int main(int argc, char* argv[]) { const int BUF_SIZE = 128; WSADATA ...原创 2017-05-01 11:09:11 · 2587 阅读 · 0 评论 -
C++中变量的生存周期
在C++中变量有以下两种生存周期: #变量由编译程序在编译时给其分配存储空间(称为静态存储分配),并在程序执行过程中始终存在。这类变量的生存周期与程序的运行周期相同,当程序运行时,该变量的生存周期随即存在,程序运行结束,变量的生存周期随即终止。 #变量由程序在运行时自动给其分配存储空间(称为自动存储分配),这类变量为函数(或块)中定义的自动变量。它们在程序执行到该函数(原创 2017-04-18 20:57:04 · 4450 阅读 · 0 评论 -
C++递归函数
如果一个函数在其函数体内直接或间接地调用了自己,该函数就被称为递归函数。递归函数是解决某些复杂问题的十分有效的方法。》递归适用于: #数据的定义形式按递归定义。 如Fibonacci数列的定义为: f(n)=f(n-1)+f(n-2) 当n>1 f(0)=1原创 2017-04-18 20:55:04 · 1509 阅读 · 0 评论