![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
学者(cloudea)
写前后端就图一乐 算法才是生活
展开
-
用c模拟面向对象编程
前言看了其它人的例了,发现写得很复杂。参考了许多篇,发现核心思想也不过是那么回事,特此记载基类模拟继承模拟继承就是子类包含所有父类的东西。我们可以直接包含一个父类对象或者父类的指针。在下面的例子中,使用的是父类的对象。#include <stdio.h>void baseShow() { printf("base");}struct Base { void (*...原创 2019-10-29 13:28:17 · 635 阅读 · 0 评论 -
window上用c/c++实现socket udp编程
服务端如果对socket()、bind()函数不理解,请看另一篇博文:windows上用c/c++实现socket tcp编程https://blog.csdn.net/u013749051/article/details/102790585#include <iostream>#include <thread>#include <winsock2.h...原创 2019-10-29 10:54:31 · 2534 阅读 · 0 评论 -
windows上用c/c++实现socket tcp编程
服务端#include <iostream>#include <thread>#include <winsock2.h>#pragma comment(lib, "ws2_32.lib")using namespace std;int main() { //不用管这两行,抄就完事了 WSADATA ws; WSAStartup(MAKEWO...原创 2019-10-28 22:59:19 · 2382 阅读 · 8 评论 -
c++ 重置stringstream的状态,清空stringstream,改变读写位置
//ss是stringstream对象ss.str(""); //将内容置空ss.clear(); //将读写状态重置原创 2018-11-01 21:43:49 · 4177 阅读 · 0 评论 -
c++ 实现部分string.h函数
#include <iostream>using namespace std;void Strcpy(char* ch1,const char* chSource) { int i = 0; while (chSource[i] != '\0') { ch1[i] = chSource[i]; i++; } ch1[i] = chSource[i];}...原创 2018-11-06 19:48:27 · 287 阅读 · 0 评论 -
基于队列和哈希的种子填充算法
继 https://blog.csdn.net/u013749051/article/details/84553642 之后,我又对种子填充算法进行了改进,主要利用了哈希的思想,以空间换时间,把这个算法的速度再次优化了。这次的优化效果非常好,填充大面积区域稍有卡顿。下面是效果图:核心代码如下:虽然看起来很多,但是相同的内容很多,逻辑清晰。void fillArea(int x, int...原创 2018-11-26 20:44:55 · 1930 阅读 · 0 评论 -
c++ 引用类型【&】需注意之第一次有效性
c++中的引用类型大家都有所了解,但是它的“第一次有效性”常常被忽略。什么是第一次有效性呢?就是引用类型只有在第一次附值时被当作引用,其它时候的附值被认为是对它所引用的内容进行的附值。举个小例子:#include <iostream>using namespace std;int main() { int a = 3; int b = 4; int& c ...原创 2018-11-30 13:01:07 · 564 阅读 · 4 评论 -
c++实现的A* 静态寻路算法 代码
在此仅提供代码,不对原理进行解释。如果想知道原理请自行百度,已经有很多前辈写过了。这里用到了简单的图形库 easyX#include<iostream>#include<math.h>#include<graphics.h>using namespace std;struct Node { Node* pre; Node* next; i...原创 2018-12-15 15:12:46 · 596 阅读 · 0 评论 -
c++ 简单透明无边框窗体
#include <iostream>#include <graphics.h>using namespace std;int main(){ initgraph(800, 600, 0); HWND hwnd = GetHWnd(); ::SetWindowLong(hwnd, GWL_STYLE, GetWindowLong(hwnd, GWL_ST...原创 2019-01-18 17:25:50 · 8221 阅读 · 0 评论 -
c++用文件流实现文件拷贝
之前用c++作后台的时候碰到一个问题:返回一张图片数据。查了一些资料终于解决了。核心就是文件流怎么读写的问题,已经将问题简化为文件拷贝,代码如下:#include <iostream>#include <fstream>using namespace std;int main(){ cout << "Content-Type:image/png...原创 2018-10-23 16:17:07 · 6720 阅读 · 11 评论 -
c++简单格式化输出输入
前言若想使用c++特有的输出格式控制,需要引用 iomanip 关文件。下面将介绍以下内容,已知请自行跳过: 本文提到的内容在sstream、fstream等流中也可以使用。decocthexuppercasenouppercaseshowbasenoshowbase—————–leftinternalrightsetw()setfill()—————–de...原创 2018-06-17 10:10:55 · 11550 阅读 · 0 评论 -
c++ namespace 名字空间试验
Lead In名字空间 是为了解决命名冲突而存在的。我们很难给每个不同的变量、函数、类、结构体、枚举命以不同的名字。虽然有变量作用域这种东西在,但如果它们都是全局的,那么要使他们不重名变得困难起来了。尤其是引用头文件时,如果头文件的内容没有定义在自己的名字空间内,那么它将默认属于全局空间。多个头文件之前可能会有名字冲突,因为两个头文件日两个不同开发者写的。头文件里的名字也可能和自己的程序里的命...原创 2018-06-16 20:23:33 · 448 阅读 · 0 评论 -
c++重载[]运算符
废话不多说,直接上代码#include<iostream>#include<sstream>using namespace std;struct mystr { int x; int y; mystr(){} mystr(int x,int y):x(x),y(y){} int& operator[](const...原创 2018-06-21 11:42:31 · 205 阅读 · 0 评论 -
c++重载自动类型转换
定义c++里有一些隐式类型转换,比如:double附值给int,内容会被截断;int和double类型的值进行运算,int自动转换为double型等。 所谓重载自动类型转换,就是用户自己定义类的自动转换方式。。。。、 我越来越懒了,直接贴代码吧。operator type(){//type为 `转换到的类型`//不需要指定返回值类型,因为返回的肯定是 `要转换到的类型`}可以...原创 2018-06-21 19:48:37 · 716 阅读 · 0 评论 -
c++常量_常对象_常成员函数
常量c++中定义常量的方法相对c有些不一样。#define PI 3.14159//for cconst int pi=3.14159;//for c++常对象常对象就是定义为常量的对象,如下:const Object obj1;Object obj1;const Object& obj2=obj1;Object& operator=(c...原创 2018-06-21 23:39:31 · 447 阅读 · 0 评论 -
c++中的异常处理
基本知识trytry模块用于检测错误try{ //your code //your code...}throwthrow用于从try模块中抛出错误,可以抛出任何东西try{ int a,b; cin&gt;&gt;a&gt;&gt;b; if(b==0) throw "b can not be zero"; cout&原创 2018-06-14 13:23:10 · 178 阅读 · 0 评论 -
c++标准异常类和自定义异常对象
前言标准异常类体系如下: 缩进层次表示继承关系exception #include &lt;exception&gt; runtime_error #include &lt;stdexcept&gt; overflow_errorunderflow_errorrange_errorlogic_error #include &lt;stdexcept&gt; invalid_a...原创 2018-06-22 19:35:21 · 3845 阅读 · 0 评论 -
c++多态之虚函数
Lead lnc++有多种方式的多态,比如有:函数重载虚函数模板今对虚函数进行分析。当没有虚函数时1.直接把子类实例附给父类的情况#include&lt;iostream&gt;using namespace std;class exA {public: exA(){} void call() { cout &lt...原创 2018-06-15 19:57:07 · 212 阅读 · 0 评论 -
c++虚函数和纯虚函数的几点说明
概念虚函数在类的成员函数定义前加 virtual 关键字,该函数将被作为虚函数。虚函数被继承后仍为虚函数。虚函数的在子类中可以被override(覆盖)、overload (重载 )virtual string toString(){}纯虚函数纯虚函数除了有virtual 关键字外,还令它等于0,以表为纯虚函数。拥有纯虚函数的类称为 抽象类 。抽象类不能被实例化。类...原创 2018-06-16 09:49:52 · 9886 阅读 · 0 评论 -
c++利用dynamic_cast实现一个函数解决所有子类问题
dynamic_cast介绍dynamic_cast<T*><exp>exp是一个指针,该函数将exp所指的对象转换为T类型对象的指针,转换成功返回对象指针,失败返回 NULL 据我所知,当exp是父类指针并指向子类时,可以通过该函数转为该子类指针,转为其它则失败,而且父类中的虚函数是必须的。code语言总是苍白无力,让我们看看代码。 先定义爸爸:str...原创 2018-06-16 12:09:15 · 687 阅读 · 4 评论 -
c++中的输入输出迭代器
1.输入任何继承了istream的对象都可以使用。以下是定义:istream_iterator<T> it(strm);//strm是输入源,可以是cinistream_iterator<T> it;//作为哨兵下面我们看示例代码:#include<iostream>#include<iterator>//必须usin...原创 2018-06-12 21:37:32 · 5283 阅读 · 5 评论