![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 66
kai8wei
这个作者很懒,什么都没留下…
展开
-
gdb 调试系列
coolshell的 gdb系列100个gdb小技巧手把手教你玩转GDB(一)—牛刀小试:启动GDB开始调试手把手教你玩转GDB(二)——Breakpoint, Watchpoint和Catchpoints手把手教你玩转GDB(三)——常用命令 手把手教你玩转GDB(四)——–函数调用栈(call stack)探密原创 2017-09-14 15:12:49 · 211 阅读 · 0 评论 -
空闲时候思考2('\0'等价于数字0还是字符0)
/********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: A.h * * Compiler: GCC vc 6.0 * * Author:WK * * ...原创 2015-07-07 22:51:02 · 1687 阅读 · 0 评论 -
C++ String类的简单实现与思考
对于字符串我们有时候很难向整型或其他变量那样进行比较和直接复制或定义,这都是C语言中遇到的问题,在C++ 中提供了一种类专门解决这种对于字符串的操作,叫做string类,我其实也想实现一下并且暂时浅浅的了解一下,以下是我简单的实现string类,我的string叫 String类注意大小写哦!!!!!!!!!/*/******************************************原创 2015-06-14 20:47:04 · 739 阅读 · 1 评论 -
STL(1)---从对->运算符的重载到灵巧指针再到迭代器
首先->也就是指针间接引用运算符一定是 一个成员函数,必须返回值是一个对象或者对象的引用,或者必须返回一个指针,被用于选择指针间接引用运算符箭头所指的内容所谓灵巧指针就是一个对象表现的像一个指针,这时候这个指针比一般的指针具有与生俱来的灵巧性,常称作灵巧指针所谓迭代器就是一个对指针进行封装的结构,通过对指针封装从而对数据结构中的数据进行访问,从而使指针不直接接触数据,既安全有方便用户#原创 2015-07-29 16:27:37 · 1827 阅读 · 0 评论 -
程序的思考之一个可以检验你指针理解功力的程序
希望结果可以不让你大吃一惊哟!小程序也可以大智慧的!#includeusing namespace std;int main(){double* (*a)[3][6];cout<<sizeof(a)<<endl; //4 a就是一个数组指针32位下是4字节cout<<sizeof(*a)<<endl; // 72 *a就是数组整体cout<<sizeof(原创 2015-08-16 11:18:58 · 601 阅读 · 0 评论 -
一个可以不传参数就可以在函数中改变调用者内部的变量数据的函数
先贴出代码void fun(){int *p= (int*)*(&p+1);p-=1;*p=100;}int main(){int a=10;fun();cout<<a<<endl;return 0;}输出结果是100;下面为了说明里面的栈帧原来我使用另一个和他相同的代码进行分析,代码与分析如下:void fun(int x){int *p= (int*)*原创 2015-08-28 22:50:04 · 1229 阅读 · 0 评论 -
用C++实现一元多项式的四则运算包括数据的文件导入与导出
对于一元多项式我们都再熟悉不过了,这是使用数据结构的单链表进行实现的,下面贴一下我的实现代码,欢迎批评指导//test.h#pragma once#include#includeusing namespace std;class P_Sum{public: typedef struct P_node{ double coef; int index; P_node* n原创 2015-08-28 14:53:16 · 3306 阅读 · 0 评论 -
浅谈输出实心菱形和空心菱形
/* * *** ***** ******* ***** *** *首先根据要输入的符号递增递减情况把图形分为上下两个三角形对于上述图形可以分为4行正三角形和3行倒三角,反之亦可可以发现每行都是先输出空格再输出*,可以循环进行细心可以发现对于空格来说由上到下依次减1,对于*是依次递增2倒三角反之,假设用 i 表示行数原创 2015-01-23 10:34:11 · 1849 阅读 · 0 评论 -
抽象类中定义纯虚函数
首先看一段代码:class Instrument{public:virtual void play()const=0//非法的定义在抽象类中定义纯虚函数 { cout<<"Instrument Play\n"; }};class Wind:public Instrument{ void play( )const { cout<<"Wind Play\n"; }原创 2015-07-31 10:58:53 · 1162 阅读 · 0 评论 -
对 malloc free ,new,delete 的思考与探索——1
/********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: A.h * * Compiler: GCC vc 6.0 * * Author:WK * * Time原创 2015-07-25 11:22:00 · 800 阅读 · 0 评论 -
对 malloc free ,new,delete 的思考与探索——2
一.重载全局new 和delete当重载全局版的new和delete的时候,使默认的版本就不能调用#include#include#include void* operator new(size_t sz)throw(std::bad_alloc)//这个就是我们使用的默认new,也就是plain new在分配失败的情况下,抛出异常std::bad_alloc而不是返回NULL,因原创 2015-07-30 17:23:37 · 820 阅读 · 0 评论 -
C++的继承关于向上类型转换
对于一个类比如马类来说可以分为很多比如千里马等等的对象,比如千里马有时候也可以作为一个类假如说是千里马类下的黑马,它是千里马的一个对象,所以它也是马,所以说它也是马的对象,这就是派生类的对象也是基类的对象,但是反过来不能说马是黑马的对象,所以计算机科学中所有都是在描述现实生活中的实物之间的关系(哈哈 我又感慨了一下)下来看几个例子enum note{middleC,Csharp,Cflat原创 2015-07-31 09:45:45 · 1641 阅读 · 0 评论 -
深浅拷贝与引用计数
其实本文重点想说一下引用计数,但是在说引用计数之前要说明一下深浅拷贝深浅拷贝是对象调用拷贝构造函数的形式当用一个已初始化过了的自定义类类型对象去初始化另一个新构造的对象的时候,拷贝构造函数就会被自动调用。也就是说,当类的对象需要拷贝时,拷贝构造函数将会被调用。以下情况都会调用拷贝构造函数:(1)一个对象以值传递的方式传入函数体 (2)一个对象以值传递的方式从函数返回 (3)原创 2015-07-29 21:08:16 · 1147 阅读 · 0 评论 -
int 的灵活使用可以当作char short和3字节使用(这里不考虑占用内存)
/********************************************************************** * * Copyright (c)2015,WK Studios * * Filename: A.h * * Compiler: GCC vc 6.0 * * Author:WK * *原创 2015-08-06 18:14:19 · 913 阅读 · 0 评论 -
交换排序之 冒泡排序(优化) (稳定)
#includeusing namespace std;//冒泡排序属于交换排序 //空间复杂度 O(1)//时间复杂度最坏是O(n2)// 最好是O(n)// 平均数O(n2)templatevoid BubbleSort(T array[],int n)//版本1{ for(int i=0;i<n-1;++i) { for(in原创 2015-09-10 23:44:56 · 450 阅读 · 0 评论 -
那些C++牛人的博客
整理收集C++世界里那些“牛人”的个人博客。凡三类:一是令人高山仰止的大牛,对C++语言本身产生过深远的影响的人;二是C++运用炉火纯青的高手,有原创性的技术干货;三是中文世界里的C++牛人。C++大牛的博客Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bj转载 2018-01-18 10:25:22 · 1444 阅读 · 0 评论 -
设计模式(C++) -----单例模式
单例模式:何为单例模式,在GOF的《设计模式:可复用面向对象软件的基础》中是这样说的:保证一个类只有一个实例,并提供一个访问它的全局访问点。首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为protected或private;最后,需要提供要给全局访问点,就需要在类中定义一原创 2016-05-03 21:40:40 · 540 阅读 · 0 评论 -
微信抢红包的算法实现(C++)
目前只能实现对于整数的钱数的红包的实现,经过随机数从而实现随机人抢红包的算法/* vs 2013 wk*/#include#include#include#includeusing namespace std;//min 默认最小金额 1=0.01元//max 默认最大金额 20000 = 200 元//total 总钱数//num 总人数lo原创 2016-07-04 17:28:20 · 10294 阅读 · 0 评论 -
笔试练习四
1.用两个栈实现一个队列首先我们知道队列是一个先进先出的数据结构 栈是个先进后出的数据结构所以根据这种特性我们可以分析出可以用两个栈来模拟队列这种数据结构具体的代码实现如下:/*** FileName : Double_statck_create_queue.cpp** Author : weikai** Date : 20原创 2016-05-03 13:08:38 · 396 阅读 · 0 评论 -
输出 0----N 的全排列
对于这种全排列我们首先思考是将其中的一个固定住后边的进行变化,再将其中的两个定住后边的变化直接到没有数据,之后再将第二个和第一个交换第二个作为第一个,再重复这个变化,直到所有的数据都成为过第一个来点实际的例子 比如 对于“abc”这三个字母的全排列: 首先将a固定住 bc进行变化 就是 abc acb 之后恢复原来的abc 再将a和b交换 就是 bac bca 之后原创 2016-04-18 22:15:34 · 1007 阅读 · 0 评论 -
构造函数真的没有返回值吗?
原创 2016-04-08 13:23:42 · 1536 阅读 · 0 评论 -
超简单的大小写字符转换函数
void BigtoSmall(){ char a; cin >> a; char b = a | 0x20; cout << (char)b << endl;}void SmalltoBig(){ char a; cin >> a; char b = a & ~ 0x20; cout << (char)b << endl;}int main(){ Bigto原创 2016-04-06 10:04:39 · 1200 阅读 · 0 评论 -
指针和引用的区别
看着很多人对指针和引用都模糊不清今天我自己探索了一下啊 ......................... 引用和指针都是地址的概念,引用是一个内存对象的别名,指针指向一个内存对象,保存了这个对象的内存地址。 区别: 1.引用不能为空,即不存在对空对象的引用,指针可以为空,指向空对象。 2.引用必须初始化,指定对哪个对象的引用,指针不需要。 3.引原创 2016-04-04 16:10:35 · 556 阅读 · 0 评论 -
用C++模拟操作系统进程调度的几种算法
******************************************** *****1.******* 先来先服务算法 ********** *****2.******** 时间片轮转 ************ *****3.******** 短作业优先 ************ *****4.******** 优先级调度 ...原创 2015-11-30 23:52:39 · 12558 阅读 · 1 评论 -
链表操作之快慢指针
使用包括链表的找环 判断链表相交 找倒数第几个节点。。。。。代码:#include#includeusing namespace std;typedef struct node{ int data; int size; struct node*next;}node;typedef node* Lnode;void init(Lnode &head原创 2015-10-24 01:02:00 · 595 阅读 · 0 评论 -
可变参数列表
C语言的可变参数列表没有什么神秘,就是从已知的变量地址根据参数内存的分配是连续的来找出后边的所有参数不信,你看底下代码#includeusing namespace std;//#includetypedef char* va_list;#define _INTSIZEOF(n) ( (sizeof(n) + sizeof(int) - 1) & ~(sizeof原创 2015-10-08 22:40:38 · 334 阅读 · 0 评论 -
C++之探索多态的本质(虚函数与虚表)2
我们都知道对于类中存在虚函数的时候,当实例化一个对象的时候,就会为这个虚函数创建一个虚表,就是用来存储这个类中的虚函数地址一.对于不进行继承的类中的虚函数与虚表/********************************************************************** * * Copyright (c)2015,WK Studios *原创 2015-07-02 20:35:54 · 975 阅读 · 0 评论 -
C++运算符重载的实现
说起CPP的运算符重载,总是让人有些不理解,如果这是函数这个函数长得也太怪了吧,YES ,就是一种函数,只是这种函数时我们在给CPP所给的运算符功能上面添加功能时候使用的一种函数,注意不能减少CPP已经存在的的运算符的功能。 定义一个重载运算符就像定义一个函数,只是该函数的名字是operator@,这里@代表运算符。函数参数表中参数的个数取决于两个因素:1) 运算符是一元的(一个参原创 2015-06-16 09:55:11 · 2112 阅读 · 1 评论 -
对一个程序的思考6(指针与指针的指针)
#include #include using namespace std;char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; char **cp[] = { c+3, c+2, c+1, c }; char ***cpp = cp; int main(void){ printf("%s", **++c原创 2015-08-08 23:23:02 · 486 阅读 · 0 评论 -
C++的运算符重载(运算符重载如何选定重载的函数类型)--思考1
学习C++ 我们最深刻的体会就是C++不像那个C同学,是那样的单纯,我们表面上一看就透,是啥就是傻。C++中所有的东西都是为面向对象而设计的,所以不免有些黑盒之类到的思想,就是很多表面的东西,在内部是经过复杂的封装的,所以这个C++同学已经别社会污染,变得城府很深了,我们要想了解这位C++同学,就必须从他的外表之下去偷窥他内心那单纯的性格,只有这样才能看到它的内心世界! 今天我想讨论一下运算原创 2015-06-06 17:13:39 · 823 阅读 · 0 评论 -
C++的内置类型和用户自定义类型的互相转换
这两种之间的转换主要有两种方式第一就是内置类型转换为用户自定义类型,这里以int类型转换为类类型的对象为例,第二就是类类型转换为int类型前者依靠转换构造函数,后者依靠自定义的类型转换函数一.转换构造函数二.类型转换构造函数#include using namespace std;//转换构造函数只有一个参数,但是有时候这种一个参数的构造函数不仅起到类型转换的作用也起原创 2015-06-24 23:32:22 · 3328 阅读 · 0 评论 -
LINUX实现简单的进度条
方法:利用数组的循环输出,是这些图形化也可以在我们的黑框中实现了 哈哈/********************************************************************** * * Copyright (c)2015,WK Studios* * Filename: progress.c* * Compiler: GCC * *原创 2015-05-29 23:54:19 · 886 阅读 · 0 评论 -
关于C++函数思考2(C++函数返回引用和返回非引用的区别)
引用是提高代码效率的一大利器,尤其对于对象来说,当引用作为参数时候不用大面积的复制对象本身所造成的空间与时间的浪费。所以有时候对于参数的返回值我们也希望返回参数的引用。在这里我们回忆一下C语言函数返回局部变量所注意的方面,也可以看我的这篇文章。下来我们对于C++ 中函数返回引用或非引用进行探讨!!1.返回引用/************************************原创 2015-06-07 16:46:04 · 859 阅读 · 0 评论 -
数据结构之—线性表之—链表之—1.单向链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。链表有很多种不同的类型:单向链表,双向链表以及循环链表 等等。 链表的优点: 使原创 2015-04-26 08:56:44 · 556 阅读 · 0 评论 -
数据结构之—线性表之—顺序表
顺序表是在计算机内存中以数组的形式保存的线性表,是指用一组地址连续的存储单元依次存储数据元素的线性结构。线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中原创 2015-04-24 20:29:37 · 585 阅读 · 0 评论 -
浅谈字符的输入输出
以下各种对于字符的输入输出方式可以根据不同的实际选择不同的方式,并没有好坏之说1.直接用cin输入字符,用cout输出(对于C语言用scanf()输入printf()输出)//特性:cin输入正确就返回非零,不正确就返回零,cout输出会跳过空格跳过回车,只会把他们当作间隔符/*********************************************原创 2015-04-24 15:04:37 · 719 阅读 · 0 评论 -
浅谈 C++ 中的this 指针
/********************************************************************** * Copyright (c)2015,WK Studios * Filename: main.cpp * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 4 7转载 2015-04-07 21:59:50 · 757 阅读 · 0 评论 -
C++ 简单实现压栈出栈
/********************************************************************** * Copyright (c)2015,WK Studios * Filename: stack.h * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 3 29原创 2015-04-06 22:05:11 · 3610 阅读 · 0 评论 -
对一个程序的思考5(C++各种函数调用)
/********************************************************************** * main.cpp * Compiler: GCC,VS,VC6.0 win32 * Author:WK * Time: 2015 3 29 *************************************原创 2015-03-29 22:39:24 · 513 阅读 · 0 评论 -
C++函数重载的本质
——每个现象后面都隐藏一个本质,关键在于我们是否去挖掘写在前面:函数重载的重要性不言而明,但是你知道C++中函数重载是如何实现的呢(虽然本文谈的是C++中函数重载的实现,但我想其它语言也是类似的)?这个可以分解为下面两个问题1、声明/定义重载函数时,是如何解决命名冲突的?(抛开函数重载不谈,using就是一种解决命名冲突的方法,解决命名冲突还有很多其它的方法,这里就不论述了)2转载 2015-03-17 19:22:43 · 616 阅读 · 0 评论