C++
文章平均质量分 74
Doo66
爱拼才会ya..
展开
-
简易复数类
【问题描述】 定义一个复数类,并重载运算符,以实现复数的加减乘除,相等与否,并显示其结果。【代码实现】// code.c#include using namespace std;class Comoplex{ friend ostream& operator<<(ostream& os ,const Comoplex& c); //友元public: Comoplex(dou原创 2016-06-05 18:37:13 · 531 阅读 · 0 评论 -
内联函数与宏定义区别
内联函数和普通函数相比可以加快程序的运行效率,因为它不需要中断调用,在编译的时候内联函数可以直接被镶嵌到目标代码中。而宏只是在预处理阶段一个简单的字符替换。内联函数需要做类型检查,这是相比宏的一个优势。宏是在代码处不加任何验证的简单替代,而内联函数是将代码直接插入调用处,而减少了普通函数调用时的资源消耗。宏不是函数,只是在预处理时将程序中有关字符替换成宏体。关键字i原创 2016-08-15 10:34:37 · 457 阅读 · 0 评论 -
sizeof与strlen区别
1.sizeof操作符的结果类型是size_t,在头文件中的定义为unsigned int 类型,该类型保证了能容纳所建立对象的字节大小。2.sizeof是操作符,strlen 是函数3.sizeof可以用类型做参数,而strlen不能,strlen只能接受char*类型,并且是以"\0"结尾的参数,sizeof还可以用函数做参数.4.数组做sizeof参数不退化,传递为str原创 2016-08-15 10:32:31 · 331 阅读 · 0 评论 -
动态联编与静态联编
首先,联编是指一个计算机程序的不同部分彼此关联的过程。静态联编是指联编工作在编译阶段完成的,这种联编过程是在程序运行之前完成的,又称为早期联编。要实现静态联编,在编译阶段就必须确定程序中的操作调用(如函数调用)与执行该操作代码间的关系,确定这种关系称为束定,在编译时的束定称为静态束定。静态联编对函数的选择是基于指向对象的指针或者引用的类型。其优点是效率高,但灵活性差。动态联编是原创 2016-08-15 10:29:58 · 1357 阅读 · 0 评论 -
AVL树
当二叉搜索树插入接近有序的节点时,二叉树会发生退化现象,搜索效率就会大大降低,这样期望的搜索效率就不会达到,然后就有人提出了高度平衡二叉搜索树(AVL树)。AVL树原创 2016-07-04 18:12:44 · 530 阅读 · 0 评论 -
C++宏进阶
众多C++书籍都忠告我们C语言宏是万恶之首,但事情总不如我们想象的那么坏,就如同goto一样。宏有一个很大的作用,就是自动为我们产生代码。如果说模板可以为我们产生各种型别的代码(型别替换),那么宏其实可以为我们在符号上产生新的代码(即符号替换、增加)。关于宏的一些语法问题,可以在google上找到。相信我,你对于宏的了解绝对没你想象的那么多。如果你还不知道#和##,也不知道pr转载 2016-08-04 17:25:34 · 441 阅读 · 0 评论 -
C++宏定义
C++提供的编译预处理功能主要有以下三种: (一) 宏定义 (二) 文件包含 (三) 条件编译 在C++中,我们一般用const定义符号常量。很显然,用const定义常量比用define定义常量更好。 在使用宏定义时应注意的是: (a) 在书写#define 命令时,注意和之间用空格分开,而不是用等号连接。 (b) 使用#def转载 2016-08-04 17:22:55 · 472 阅读 · 0 评论 -
结构体内存对齐
为什么会出现内存对齐? 因为当CPU访问内存对齐的数据时,它的运行效率是非常高的。当CPU试图读取的数值没有正确的对齐时,CPU可以执行两种操作之一:产生一个异常条件;执行多次对齐的内存访问,以便读取完整的未对齐数据,若多次执行内存访问,应用程序的运行速度就会慢。所以计算机采用内存对齐的方式来存储数据。这是高效编程一种很重要的思想:以空间换时间关于结构体内存对齐(没有指定#pragma pa原创 2016-06-05 18:38:16 · 541 阅读 · 0 评论 -
C++ 复杂链表的复制
复杂链表节点结构:650) this.width=650;" src="http://s2.51cto.com/wyfs02/M01/7F/3F/wKioL1cXgd3BU56fAAAavyxy3_w404.png" title="P{PQCTDN$LZM5U}}8]$[__8.png" alt="wKioL1cXgd3BU56fAAAavyxy3_w404.png" />struct Compl原创 2016-06-05 18:38:14 · 1274 阅读 · 0 评论 -
C++_智能指针
讲这个之前,先来看一个例子:void Test1 (){ int* p1 = new int(2); //... try { DoSomeThing(); } catch(...) { delete p1 ; throw; } //... delete p1 ;}这个例子原创 2016-06-05 18:38:02 · 391 阅读 · 0 评论 -
C++_模板类与类型萃取技术
在声明变量,函数,和大多数其他类型实体的时候,C++要求我们使用指定的类型。然而,有许多代码,除了类型不同之外,其余部分看起来都是相同的,比如,下面这个例子:bool IsEqual (int left, int right){ return left == right;}bool IsEqual (const string& left , const string& right)原创 2016-06-05 18:37:57 · 480 阅读 · 0 评论 -
C++ 中string类的三种模拟实现方式
1.原始版本(拷贝构造和赋值运算符重载时,需要重新开辟空间)#include #include using namespace std;class String{ friend ostream& operator<<(ostream& os, const String& S);public: String(char* str = "") :_str(new char[strl原创 2016-06-05 18:37:51 · 817 阅读 · 1 评论 -
深度理解C字符串与C++字符串
在C中,并没有字符串这个数据类型,而是使用字符数组来保存字符串。C字符串实际上就是一个以null('\0')字符结尾的字符数组,null字符表示字符串的结束。需要注意的是:只有以null字符结尾的字符数组才是C字符串,否则只是一般的C字符数组。 C字符串定义时可以利用"="号进行初始化,但是以后不能利用"="对C字符串进行赋值。对C字符串的操作需要通过"string"文件中定义的字符串处理函转载 2016-06-05 18:37:48 · 365 阅读 · 0 评论 -
模板实现简易queue
队列提供了以下操作:q.empty() //如果队列为空返回true,否则返回falseq.size() //返回队列中元素的个数 q.pop() //删除队列首元素的值,但不返回其值 q.front() //返回队列首元素的值,但不删除其值q.push(原创 2016-06-05 18:37:45 · 367 阅读 · 0 评论 -
模板实现简易stack
栈提供了以下操作:/*cpp*/s.empty() //如果栈为空返回true,否则返回falses.size() //返回栈中元素个数 s.pop() //删除栈顶元素,但不返回其值s.top() //返回栈顶元素,但不删除元素s.push()原创 2016-06-05 18:37:42 · 447 阅读 · 0 评论 -
简易日期类
【任务要求】 1.实现:日期 + 天数 = 日期; 2.实现:日期 - 天数 = 日期; 3.实现:日期 - 日期 = 天数;【代码实现】#include using namespace std;class Date{ friend ostream& operator<<(ostream& os ,const Date& d);//友元public: Date(in原创 2016-06-05 18:37:25 · 304 阅读 · 0 评论 -
重载,覆盖,隐藏
重载:同一作用域内,函数名相同,参数类型不同的一类函数,他们就构成了重载。覆盖:基类提供一个虚方法,子类继承基类并且重写这个虚方法,这样就构成了多态。隐藏:基类的非虚方法被子类继承时重写,那么基类的方法就会被隐藏,在用子类对象该方法,就只会调用子类的方法。原创 2016-08-15 10:41:45 · 400 阅读 · 0 评论