看到书中的return *this比较疑惑,查询过后总结如下。 class temp { ...; } 假如定义temp *get(){return this;},那么返回的this就是地址,即返回一个指向对象的指针 假如定义temp get(){return *this;} 那么返回的就是对象的克隆,是一个临时变量 假如定义temp &get(){return *this;} 那么返回的就是对象本身 例如: #include<iostream> using namespace std; class A { public: int x; A get() { return *this; } }; int main() { A a; A b; a.x = 4; if( a.x == a.get().x ) { cout << "asasas 继续阅读 >>


吕子健 17/11/07 20:28:31
#include<iostream> using namespace std; struct huff { int weight; huff *left,*right; }; int *coding = new int[10]; class huffmantree { huff *Tree; public: huffmantree(); huff *get(); void init(); void show( huff *tree ); int weightlen( huff *tree,int len ); void huffcoding( huff *tree,int len ); }; huffmantree::huffmantree() { Tree = NULL; } huff *huffmantree::get() { return Tree; } //建立huffma 继续阅读 >>


吕子健 17/11/04 15:10:03
/******************************************************* >非递归遍历二叉树(先序、中序、后序遍历) *****************************************************/ #include<iostream> #include<stack> using namespace std; struct node{ //定义树节点 char ch; node *left,*right; }; node *creat(); void preorder( node *root ); void inorder( node* root ); void postorder( node *root ); int main() { node *root = creat(); cout << "先序遍历:"; preorder( roo 继续阅读 >>


吕子健 17/10/25 21:52:31
讨论这三者的区别我们要先认识函数模板,函数模板是C++新增的功能,他会创建一个通用的函数以支持多种不同类型的形参,避免函数体的重复设计,在我们需要重复用到某一段代码但是需要处理不同类型的参数时,使用函数模板是很方便的一个手段他最大的特点是把数据类型也作为了参数。每一个函数用一个函数模板,想让几个函数使用共同的模板参数,应当使用模板类 显示实例化: template void Swap<int> (int ,int); 显示具体化:( 定义job为一个结构体 ) template <> void Swap<job> (job &,job &); 或 template<> void Swap (job &,job &); 从定义形式上我们可以看出区别在于前者以 template 打头,后者以template<> 打头 从含义上,显示具体化告诉编译器不要使用Swa 继续阅读 >>


吕子健 17/10/23 22:36:49
C++将输入看作是流入程序的字符流,iostream文件定义cin为表示这种流的对象 对应的输入数据都会先存入输入缓冲区,cin从输入缓冲区中读入数据,所以当缓冲区中有残留数据时,cin直接取得残留数据而不会请求键盘输入 cin是以空格为分隔的,而读到回车后,结束输入,丢掉换行,即回车在正常情况下不进入缓冲区 那么,在非法输入后,我们会面对什么呢? #include<iostream> using namespace std; int main() { int a,b; cin >> a; //cout << " cin.fail == " << cin.fail() << endl; //cin.clear(); //cin.ignore(); cin >> b; cout << "a == " << a << " b == " 继续阅读 >>


吕子健 17/10/17 23:10:31
C++中输入、输出用的是cin、cout,对应的有输入输出缓冲区,cin、cout都是对缓冲区中的数据进行操作,那么看下面代码: #include <iostream> using namespace std; int hello1(); int hello2(); int main() { int a, b; cout << "a=" << hello1() << endl << "b=" << hello2() << endl; return 0; } int hello1() { cout << "hello1" << endl; return 1; } int hello2() { cout << "hello2" << endl; return 2; } 它的输出顺序是什么呢,会是 a=hello1 继续阅读 >>


吕子健 17/09/27 21:39:42
这三种都是对表达式的记法,区别只在于运算符与操作数的相对位置的差异,中缀表达式就是我们一般使用的相对容易理解的表达式,但是对于计算机来说,就很麻烦了,而前缀和后缀表达式对于计算机来说才是容易理解的版本 举例: (3 + 4) * 5 - 6 就是中缀表达式 - * + 3 4 5 6 前缀表达式 3 4 + 5 * 6 - 后缀表达式 前缀表达式的计算机求值: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,遇到运算符时,弹出栈顶的两个数,用运算符对它们做相应的计算(栈顶元素 op 次顶元素),并将结果入栈;重复上述过程直到表达式最左端,最后运算得出的值即为表达式的结果。 例如前缀表达式“- × + 3 4 5 6”: (1) 从右至左扫描,将6、5、4、3压入堆栈; (2) 遇到+运算符,因此弹出3和4(3为栈顶元素,4为次顶元素,注意与后缀表达式做比较),计算出3+4的值,得7,再将7入栈; (3) 接下来是×运算符,因此弹出7和5,计算出7×5=35,将35入栈; (4) 最后是 继续阅读 >>


吕子健 17/09/21 11:16:13
说到抽象数据类型,那么就得先提到数据类型 数据类型指的是一个值的集合以及定义在这个集合上的一组操作 为什么要有不同的数据类型呢 当我们计算1+1的时候,只需要很小的存储空间,但是当我们去计算10000+100000的时候,所需要的空间就会大许多,那么我们为了去区分这些类别的差异,就有了不同的数据类型来更精确的确定存储空间的划分 第一次看到 int a;的时候,可是一脸懵逼,以为只是告诉我们这是一个“int”型的数据,现在看来,还是太浅了 而抽象数据类型包含三个部分:数据对象(数据元素)、数据关系(数据关系二院组结合)、基本操作(操作函数的罗列)。 那么按我的理解用大白话来说: 1. ADT和数据类型的关系,是被包起来的,即ADT∈数据类型 2. ADT需要通过固有的数据类型来实现 3. 举个列子,就像定义一个结构体,里面有很多不同的类型,然后定义基本操作,也就是说定义的函数 作者:weixin_368 继续阅读 >>


吕子健 17/09/12 21:10:48
这次写项目,在实现聊天的遇到一个问题:两个人实现即时聊天意味着你要死循环不停输入信息 这意味着你需要判断什么时候结束死循环,输入特定字符串来结束死循环的话,如果就想给对面发这个字符串呢 所以我想到了用ctrl+c来结束死循环,这样就用到了signal这个函数 上代码: #include<stdio.h> #include<signal.h> int flag; void s( int sig ) { flag = 0; } int main() { flag = 1; while( flag ) { signal( SIGINT,s ); } return 0; } 简单来说,遇到SIGINT软中断信号后,不去执行默认退出的操作,而是执行指定的s函数 在main里执行死循环,直到收到软中断信号,执行s函数,使flag 变为0,退出死循环 s函数的int参数接受的是信号种类 这里关于s函数具体的定 继续阅读 >>


吕子健 17/08/18 20:38:02
之前写课设的时候读取文件内容到链表,明明感觉代码没有问题,但是尾节点却总是不能正常置空,还会多出来一个节点,当时百思不得解,这道这次写项目,又碰到相同问题,才想明白了 如图: 这是我之前的操作,while读取文件内容fscanf为EOF时停止读取 这时将P指向NULL 也但是因为已经给P开辟了一块空间,让P和head指向它,这时你让P指向空,并没有改变head指向2所以他会“多出来”一个节点 以后的链表操作还需要细心一些啊… 作者:weixin_36888577 发表于 2017/08/18 09:54:39 原文链接 https://blog.csdn.net/weixin_36888577/article/details/77363156 阅读:101 继续阅读 >>


吕子健 17/08/18 09:54:39