摘要:
将插值比例1/2换成其他值实现拉格朗日插值查找 由来:拉格朗日插值公式 数据均匀排布的情况下 一次找到 数据不均匀排布的情况下 找到的次数在一次和二分查找法之间 阅读全文
posted @ 2019-01-08 15:40
lemaden
阅读(393)
评论(0)
推荐(0)
摘要:
指针悬挂: 问题:使用new申请的内存内存空间无法访问,也无法释放。 原因:直接对指向new申请的存储空间的指针变量进行赋值修改 后果:失去了原来的地址,原来的空间无法访问也无法释放,造成内存泄漏 还可能造成同一个内存释放两次 容易引起指针悬挂的方式:对象的初始化和对象间赋值 容易引起指针悬挂的条件 阅读全文
posted @ 2019-01-08 13:52
lemaden
阅读(286)
评论(0)
推荐(0)
摘要:
memset原型:extern void *memset(void *buffer, int c, int count);用法:#include <string.h>功能:把buffer所指内存区域的前count个字节设置成字符c。说明:返回指向buffer的指针。用来对一段内存空间全部设置为某个字 阅读全文
posted @ 2019-01-08 13:40
lemaden
阅读(144)
评论(0)
推荐(0)
摘要:
声明了派生类,就可以进一步声明派生类的对象用于解决问题;但是对象在使用之前必须要初始化,而对派生类的初始化就是对该类的数据成员赋值;派生类的数据成员包括三类:基类数据成员,新增数据成员,成员对象数据成员(也叫子对象,或者内嵌对象);由于基类的构造函数并没有被继承下来,所以要完成初始化的工作,就要在派 阅读全文
posted @ 2019-01-08 13:39
lemaden
阅读(382)
评论(0)
推荐(0)
摘要:
C++宏详解代码自动生成-宏带来的奇技淫巧 众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有 一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换), 那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。 阅读全文
posted @ 2019-01-08 13:34
lemaden
阅读(647)
评论(0)
推荐(0)
摘要:
类的继承与派生派生类的生成过程,实际上是经历了三个步骤:1、吸收基类成员;2、改造基类成员;3、添加基类成员;1、吸收基类成员就是派生类继承从基类过来的所有成员,但是基类的构造函数和析构函数除外;2、改造基类成员包含两个方面:(1)基类成员的访问控制(2)对基类数据或函数成员的覆盖就是说如果派生类中 阅读全文
posted @ 2019-01-08 13:28
lemaden
阅读(390)
评论(0)
推荐(0)
摘要:
问题一:void GetMemory(char *p){ p=(char*)malloc(100);} void Test(void){ char *str = NULL; //char *str = (char*)malloc(100); //上面一句话改成这句就对了 GetMemory(str) 阅读全文
posted @ 2019-01-08 13:23
lemaden
阅读(195)
评论(0)
推荐(0)
摘要:
一、指针和数组的对比 1、数组的创建方式:静态存储区或者栈。 数组名 对应 着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的 内容 可以改变。 2、指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。 char *p = "littlesea"; 阅读全文
posted @ 2019-01-08 13:18
lemaden
阅读(436)
评论(0)
推荐(0)
摘要:
伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程序,往往提心吊胆。如果不想触雷,唯一的解决办法就是发现所有潜伏的地雷并且排除它们,躲是躲不了的。本文的内容比一般教科书的要 阅读全文
posted @ 2019-01-08 13:14
lemaden
阅读(150)
评论(0)
推荐(0)
摘要:
程序的异常处理是使得程序具有一定的容错性,是指允许给运行环境或者人为因素的一些错误的提示或处理。其基本思想:每一个函数要负责发现异常,不必去处理错误,但是需要构造一个异常对象向调用者抛出该异常。该调用者查看异常对象,判断是否能够解决,给用户提示;如果处理不了,则需要继续向更上一级的调用者抛出异常,如 阅读全文
posted @ 2019-01-08 11:36
lemaden
阅读(285)
评论(0)
推荐(0)
摘要:
1、泛型程序设计:将程序尽可能写的通用,将算法从特定的数据结构中抽象出来,成为通用的;C++模板为泛型程序设计奠定了关键的基础;STL是泛型程序设计的一个范例:容器container、迭代器iterator、算法algorithms和函数对象function object。 2、命名空间namesp 阅读全文
posted @ 2019-01-08 11:35
lemaden
阅读(390)
评论(0)
推荐(0)
摘要:
I/O流的概念 当程序与外界环境进行信息交换时,存在着两个对象,一个是程序中的对象,另一个是文件对象,流是一种抽象,它负责在数据的生产者和数据的消费者之间建立连接,并管理数据的流动。程序建立一个流对象,并指定这个流对象与某个文件对象建立连接,程序操作流对象,流对象通过文件系统对所连接的文件对象产生作 阅读全文
posted @ 2019-01-08 11:35
lemaden
阅读(445)
评论(0)
推荐(0)
摘要:
1、函数模板:可以用来创建一个通用功能的函数,以支持多种不同形参,进一步简化重载函数的函数体设计。 声明方法:template<typename 标识符> 函数声明 求绝对值的模板 #include<iostream> ……编译器从调用abs函数时实参的类型,推导出函数模板的类型参数。using n 阅读全文
posted @ 2019-01-08 11:34
lemaden
阅读(3930)
评论(0)
推荐(0)
摘要:
多态是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为; 多态的实现:函数重载;运算符重载;虚函数 为什么需要重载运算符? 在C++没有复数运算,进行复数运算之前我们要事先写一个复数类,复数的运算该如何设计?为了实现复数的加减,我们需要重载+、-运算符。 运算符重载的实质:是对已有的运 阅读全文
posted @ 2019-01-08 11:33
lemaden
阅读(322)
评论(0)
推荐(0)
摘要:
11、用字符数组存储和处理字符串 字符数组的声明和引用 字符串: 字符串常量 “china”,没有字符串变量,用字符数组来存放字符串,字符串以‘\0’结束。 字符串数组的初始化: 逐个输出输入字符串; 将整个字符串一次输入输出; 输出字符不包含\0; 输出字符串时用数组名,遇到\0结束; 输入多个字 阅读全文
posted @ 2019-01-08 11:32
lemaden
阅读(433)
评论(0)
推荐(0)
摘要:
1、类的继承与派生 保持已有类的特性而构造新类的过程成为继承; 在已有类的基础上新增自己的特性而产生新类的过程称为派生; 被继承的已有类为基类;派生出的新类成为派生类。继承和派生其实是一回事。 继承的目的是实现代码的重用,派生的目的是当新的问题出现的时候,原有的程序不能解决时,需要对原程序进行改造。 阅读全文
posted @ 2019-01-08 11:32
lemaden
阅读(581)
评论(0)
推荐(0)
摘要:
要实现深拷贝就需要自己编写拷贝构造函数。 深拷贝 #include<iostream> using namespace std; class Point { public: Point() { X=Y=0; cout<<"Default Constructor called."<<endl; } P 阅读全文
posted @ 2019-01-08 11:31
lemaden
阅读(2315)
评论(0)
推荐(0)
摘要:
动态创建多维数组 new 类型名T[下标表达式1][下标表达式2]…; 如果内存申请成功,new运算返回一个指向新分配内存首地址的指针,是一个T类型的数组,数组元素的个数为除最左边一维外各维下标表达式的乘积。例如: char (*fp)[3];//指向一维数组的指针,即指向一个整个数组,如果指针加1 阅读全文
posted @ 2019-01-08 11:30
lemaden
阅读(190)
评论(0)
推荐(0)
摘要:
10、深拷贝与浅拷贝 浅拷贝: 实现对象间数据元素的一一对应赋值;(默认构造函数) 深拷贝: 当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指的对象进行复制。 //浅拷贝 #include<iostream> using namespace std; class Point 阅读全文
posted @ 2019-01-08 11:30
lemaden
阅读(312)
评论(0)
推荐(0)
摘要:
//创建对象数组 #include<iostream> using namespace std; class Point { public: Point() { X=Y=0; cout<<"Default Constructor called."<<endl; } Point(int xx,int 阅读全文
posted @ 2019-01-08 11:29
lemaden
阅读(1836)
评论(0)
推荐(0)
摘要:
9.动态内存分配 new 类型名T(初值列表) 其功能是在程序执行期间申请用于存放T类型对象的内存空间,并依初值列表赋以初值,结果值:成功则T类型的指针,指向新分配的内存;失败则为0(null)。若要释放内存,则用delete *p;释放指针p指向的内存,P必须是new操作的返回值。 //动态分配 阅读全文
posted @ 2019-01-08 11:28
lemaden
阅读(239)
评论(0)
推荐(0)
摘要:
8、对象指针 声明: 类名 *对象指针名 Point A(5,10); Point *ptr; ptr=&A;//通过指针访问对象成员:对象指针名->成员名。ptr->getX();相当于(*ptr).getX; 曾经错误的前向引用的例子 class Fred; //前向引用声明 class Bar 阅读全文
posted @ 2019-01-08 11:27
lemaden
阅读(224)
评论(0)
推荐(0)
摘要:
8.2 指向类的静态成员的指针 对类的静态成员的访问不依赖于对象,可以用普通的指针来指向和访问。 //通过指针访问类的静态数据成员 #include <iostream> using namespace std; class Point //Point类声明 { public: //外部接口 Poi 阅读全文
posted @ 2019-01-08 11:27
lemaden
阅读(314)
评论(0)
推荐(0)
摘要:
指针作为函数参量 指针作为函数参量,以地址的方式传递数据,可以用来返回函数处理结果;实参是数组名时形参可以是指针。 题目:读入三个浮点数,将整数部分和小数部分分别输出 #include <iostream> using namespace std; void splitfloat(float x, 阅读全文
posted @ 2019-01-08 11:26
lemaden
阅读(269)
评论(0)
推荐(0)
摘要:
7.4 指向数组元素的指针 声明与赋值 例:int a[10], *pa; pa=&a[0]; 或 pa=a[p1] ; 通过指针引用数组元素,经过上述声明及赋值后: *pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i]. a[i], *(pa+i), *(a+i), 阅读全文
posted @ 2019-01-08 11:25
lemaden
阅读(1239)
评论(0)
推荐(0)
摘要:
7、关于内存地址 内存空间的访问方式:通过变量名访问,通过地址访问; 地址运算符:& 如:int var; 则&var表示变量var的内存起始地址; //& 出现在声明语句中出现时引用,别名而已,在运算表达式中出现&,说明是取内存地址。 7.1 指针变量的概念 指针:内存地址,用于间接访问内存单元 阅读全文
posted @ 2019-01-08 11:24
lemaden
阅读(400)
评论(0)
推荐(0)
摘要:
6.3 二维数组的声明和引用 声明:数据类型 标识符[常量表达式1][常量表达式2];int a[3][4]; 表示a为整型二维数组,其中第一维有3个下标(0~2),第二维有4个下标(0~3),数组元素12个,可以用来存放3行4列的整型数据表格。可以理解为: a[0]——a 00 a01 a02 a 阅读全文
posted @ 2019-01-08 11:23
lemaden
阅读(2120)
评论(0)
推荐(0)
摘要:
6、数组 指针与字符串 6.1 数组 数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量成为数组的元素。数组属于构造类型。 一维数组的声明: 类型说明符 数组名[常量表达式],若int a[10],a是整形数组,有十个元素,为a[0]……a[9]。 引用:必须先声明后使用,只能逐个引用 阅读全文
posted @ 2019-01-08 11:21
lemaden
阅读(5250)
评论(0)
推荐(0)
摘要:
1、作用域和可见性 1.1 函数原型中的参数其作用域仅在()内。因此参数名称可有可无,但是参数类型需要声明。 1.2 块作用域 在块中声明的标识符其作用域自声明处起,限于块中。 1.3 类作用域 类作用域作用于特定的成员名。如类X的成员M具有类作用域,对M的访问方式如下: 如果在X的成员函数中没有声 阅读全文
posted @ 2019-01-08 11:20
lemaden
阅读(1727)
评论(0)
推荐(0)
摘要:
1、抽象: 是对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。 1.1 先注意问题的本质描述,其次是实现过程和细节; 1.2 数据抽象:描述某类对象的属性或状态(对象相互区别的物理量); 1.3 代码抽象:描述某类对象共有的行为特征和具体功能; 1.4 抽象的实现:类的声明。 阅读全文
posted @ 2019-01-08 11:15
lemaden
阅读(391)
评论(0)
推荐(0)
摘要:
1、函数的声明与调用 函数在面向对象的程序设计中是对功能的抽象。其语法形式: 类型标识符函数名(含类型说明的形式参数表){语句序列},函数的返回值用return给出,其中类型标识符在没有返回值的情况下写成void,则不谢return,形式参数被初始化的内部变量,寿命和可见性仅限于函数内部。 函数的调 阅读全文
posted @ 2019-01-08 11:08
lemaden
阅读(511)
评论(0)
推荐(0)
摘要:
1、一个简单的程序 2、C++字符集 大小写英文字符,数字字符,某些特殊字符。 3、C++的词法记号 关键字 C++预定义的单词,不能用作别的含义 标识符 程序员定义的实体名称,变量名、函数名、类名等 文字 直接使用符号表示的变量 操作符 运算符号,+、-... 分隔符 用于分隔程序正文等 ,; { 阅读全文
posted @ 2019-01-08 11:04
lemaden
阅读(599)
评论(0)
推荐(0)
摘要:
计算机语言的发展 1、机器语言(二进制)、汇编语言。比较难以理解和识记,与人类语言之间的差距太大; 2、高级语言,可以写出类似于人类思维的语句,可以有人们习惯的表达方式; 3、面向对象的语言,描述客观世界事物的属性和行为以及其关系;将具有共同属性和行为的事物归类,形成类,并且可以继承(同类的共同属性 阅读全文
posted @ 2019-01-08 11:01
lemaden
阅读(218)
评论(0)
推荐(0)

浙公网安备 33010602011771号