摘要:C++的类型转换 1 类型转换名称和语法 C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是: TYPE b = (TYPE)a C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。 static_cast静态类型转换。如int转换成char reinterpreter_cast重新解释类型 ...
阅读全文
摘要:前言 C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。 1)C++提供两种模板机制:函数...
阅读全文
摘要:纯虚函数和抽象类 1基本概念 2抽象类案例 3抽象类在多继承中的应用 C++中没有Java中的接口概念,抽象类可以模拟Java中的接口类。(接口和协议) 3.1有关多继承的说明 工程上的多继承 被实际开发经验抛弃的多继承 工程开发中真正意义上的多继承是几乎不被使用的 多重继承带来的代码复杂性远多于其带来的便利 多重继承对代码维护性上的影响是灾难性的 在...
阅读全文
摘要:多态 问题引出(赋值兼容性原则遇上函数重写) 面向对象新需求 C++提供的多态解决方案 多态案例 多态工程意义 面向对象三大概念、三种境界(封装、继承、多态) 多态成立条件 总结条件、看代码的时候要看出多态 1多态 1.1问题引出 如果子类定义了与父类中原型相同的函数会发生什么? 函数重写 在子类中定义与父类中原型相...
阅读全文
摘要:1继承概念 面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。说了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础。 要较好地进行面向对象程序设计,还必须了解面向对象程序设计另外两个重要特 征——继承性和多态性。本章主要介绍有关继承的知识,多态性将在后续章节中讲解。 继承性是面向对象程序设计最重要的特征,可以说...
阅读全文
摘要:类和对象 基本概念 1)类、对象、成员变量、成员函数 2)面向对象三大概念 封装、继承、多态 3)编程实践 类的定义和对象的定义,对象的使用 求圆形的面积 定义Teacher类,打印Teacher的信息(把类的声明和类的实现分开) 类的封装 1)封装(Encapsulation) A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这...
阅读全文
摘要:简单的C++程序 求圆的周长和面积 数据描述: 半径,周长,面积均用实型数表示 数据处理: 输入半径 r; 计算周长 = 2*π*r ; 计算面积 = π* r2 ; 输出半径,周长,面积; 方法1:用结构化方法编程,求圆的周长和面积 // count the girth and area of cir...
阅读全文
摘要:C接口的封装和设计专题 Win32环境下动态链接库(DLL)编程原理 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作。其中可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用。在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序EXE文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序...
阅读全文
摘要:文件操作专题 C语言文件读写概念 文件分类 按文件的逻辑结构: 记录文件:由具有一定结构的记录组成(定长和不定长) 流式文件:由一个个字符(字节)数据顺序组成 按存储介质: 普通文件:存储介质文件(磁盘、磁带等) 设备文件:非存储介质(键盘、显示器、打印机等) 按数据的组织形式: 文本文件: ASCII文件,每个字节存放一个字符的ASCII码 二进制文件:数据按其在内存中的存储形式原样存放 ...
阅读全文
摘要:结构体专题 01、结构体类型定义及结构体变量定义 char c1,char c2, char name[62]; int age char name[62]; int age,char c1,char c2 结构体变量的引用 :. 结构体变量的指针 :-> 02、结构体做函数参数 结构体赋值编译器行为研究 结构体变量做函数参数 P...
阅读全文
摘要:二级指针内存模型建立 void main2() { int i = 0; //指针数组 char * p1[] = { "123", "456", "789" };//二级指针的第一种内存模型 //二维数组 ...
阅读全文
摘要:字符串基本操作 字符数组初始化方法 int main() { //1 {}号法 初始化列表 //数组初始化有2种方法 默认元素个数、指定元素个数 char buf1[] = { 'a', 'b', 'c', 'd', 'e' };//若没有指定长度,默认数组长度即为参数个数 ...
阅读全文
摘要:指针知识体系搭建 指针强化 指针是一种数据类型 指针也是一种变量,占有内存空间,用来保存内存地址 测试指针变量占有内存空间大小:sizeof(指针名); 2)*p操作内存 在指针声明时,*号表示所声明的变量为指针 在指针使用时,*号表示操作指针所指向的内存空间中的值 *p相当于通过地址(p变量的值)找到一块内存;然后操作内存 *p放在等号的左边赋值(给内存赋值) *p放在等...
阅读全文
摘要:函数调用模型 基本原理 实际上就是不断的从一个内存跳到另一个内存。 函数调用变量传递分析 一个主程序有n函数组成,c++编译器会建立有几个堆区?有几个栈区? 答:一个程序只有一个堆区和一个栈区。 函数嵌套调用时,实参地址传给形参后,C++编译器如何管理变量的生命周期? 上一级的变量在下一级调用中可以使用,传参后上级变量依旧存在。下级的变量不能在上级中调用,在堆区开辟的变量除外。...
阅读全文
摘要:数据类型本质分析 数据类型概念 "类型"是对数据的抽象; 类型相同的数据有相同的表现形式/存储格式以及相关的操作; 程序中使用的所有数据都必定属于某一种数据类型; 数据类型本质思考 数据类型和内存有关系吗? 数据类型占据大小一定的内存空间. C/C++为什么会引入数据类型? 不同的数据类型所对应的处
阅读全文
摘要:void含义 void的字面意思是"无类型",void*则为"无类型指针",void*可以指向任何类型的数据。 void几乎只有"注释"和限制程序的作用,定义一个void变量没有意义,不妨试着定义: void a; 这行语句编译时会出错。不过,即使void a的编译不会出错,它也没有任何实际意义。 void真正发挥的作用在于: (1)对函数返回的限定; (2)对函数参数的限定。 众所周知,如果指针...
阅读全文
摘要:条件测试 命令test或 [ 可以测试一个条件是否成立,如果测试结果为真,则该命令的Exit Status为0,如果测试结果为假,则命令的Exit Status为1(注意与C语言的逻辑表示正好相反)。例如测试两个数的大小关系: itcast@ubuntu:~
var=2itcast@ubuntu: test
var−gt1itcast@ubuntu: echo $? ...
阅读全文
摘要:要掌握一门语言,就要先掌握它的语法.如同C语言一般,shell也有自己的语法. 变量 按照惯例,Shell变量通常由字母加下划线开头,由任意长度的字母、数字、下划线组成。有两种类型的Shell变量: 环境变量 环境变量可以从父进程传给子进程,因此Shell进程的环境变量可以从当前Shell进程传给fork出来的子进程。用printenv命令可以显示当前Shell进程的环境变量。 本地变量 只存在...
阅读全文
摘要:shell类型: shell的历史网络上有一大堆,这里就不介绍了.但是我们的Linux系统上是有许多种shell的我们可以查看:使用命令 vi /etc/passwd 可以查看用户对应的shell(其中最后一列显示了用户对应的shell类型):下图就是我的Linux上所有用户对应的shell: 这里我就介绍几种: sh(Bourne Shell):由Steve Bourne开发,各种UNIX系...
阅读全文
摘要:TCP状态 CLOSED:表示初始状态。 LISTEN:该状态表示服务器端的某个SOCKET处于监听状态,可以接受连接。 SYN_SENT:这个状态与SYN_RCVD遥相呼应,当客户端SOCKET执行CONNECT连接时,它首先发送SYN报文,随即进入到了SYN_SENT状态,并等待服务端的发送三次握手中的第2个报文。SYN_SENT状态表示客户端已发送SYN报文。 SYN_RCVD: 该状态...
阅读全文