C++
black_kyatu
这个作者很懒,什么都没留下…
展开
-
C++之简单五子棋的设计思路
在结束了对C++的学习之后,准备自己编制一些简单的练习程序。目前初步设想是编制一个人机对战的简易五子棋软件。 以下为个人设计思考的过程。 首先,进行问题分析与设计。计划实现的功能为,开局选择人机或双人对战,确定之后比赛开始。比赛结束后初始化棋盘,询问是否继续比赛或退出。后续可加入复盘、悔棋等功能。整个过程中,涉及到了棋子和棋盘两种对象,同时要加上人机对弈时的AI对象,即涉及到三个对象。棋盘...原创 2018-02-08 20:39:58 · 5387 阅读 · 4 评论 -
C++编程之自定义日志类 ——log4cpp使用详解
C++编程之自定义日志类 ——log4cpp使用详解log4cpp简介与安装log4cpp安装log4cpp简单介绍layout布局——日志输出格式log4cpp::BasicLayoutlog4cpp::PatternLayoutappenderlog4cpp::FileAppenderlog4cpp::RollingFileAppenderlog4cpp::OstreamAppenderlog...原创 2019-06-23 21:29:29 · 7102 阅读 · 2 评论 -
C/C++辨析
开始复习C++,针对C与C++的一些关键不同和区别,做以下总结:命名空间c++诞生时,程序编写已经越来越复杂了,为了避免越来越长的函数和变量名称,防止重名,于是C++中加入了命名空间机制。说白了,就是把一堆变量和函数的声明或者定义放在一起,然后起个集体的名字,就叫命名空间。命名空间的用法当在命名空间外使用变量或者函数时,就需要指明是哪个命名空间,即需要加上作用域限定符说明。例如std:...原创 2019-06-17 21:07:25 · 222 阅读 · 0 评论 -
C++三大IO流类总结——标准IO流、文件IO流、内存IO流
C++三大IO流类总结——标准IO流、文件IO流、内存IO流 IO流类一览标准IO流标准IO流的条件状态条件状态标志条件状态函数标准IO流的输入输出成员函数代码示例条件状态put和get函数getline函数标准IO的格式控制输出格式控制缓冲区控制控制bool类型格式进制控制其他常用输出格式控制输入格式控制文件输入输出流字符串输入输出流类IO流类一览ios:流基类(抽象类)istrea...原创 2019-06-20 21:53:51 · 4947 阅读 · 1 评论 -
C++三大IO流类总结——标准IO流、文件IO流、内存IO流
C++三大IO流类总结——标准IO流、文件IO流、内存IO流 IO流类一览标准IO流标准IO流的条件状态条件状态标志条件状态函数标准IO流的输入输出成员函数代码示例条件状态put和get函数getline函数标准IO的格式控制输出格式控制缓冲区控制控制bool类型格式进制控制其他常用输出格式控制输入格式控制文件输入输出流字符串输入输出流类IO流类一览ios:流基类(抽象类)istrea...原创 2020-02-13 19:40:50 · 1038 阅读 · 0 评论 -
C++简单五子棋的AI设计及实现
设计思路:通过接口获取信息来确定颜色,通过set_chess函数来确定落点。对每个点位给出两种颜色棋子的打分,分别存在两个15*15的数组里,数组下标代表点的位置。确定最大值所在数组之后,遍历该数组找出所有最大值对应的位置,然后对这些位置统计另一种颜色的棋子的分数,再选取一次最大值,从而确定要落点的位置。打分函数的设计:在四个方向分别统计然后相加。对于某一个方向的分数统计,则分为正反两个...原创 2018-02-17 00:39:04 · 6899 阅读 · 1 评论 -
C++之简单五子棋的语言设计实现
算法思路在上一篇[C++之简单五子棋的设计思路](http://blog.csdn.net/black_kyatu/article/details/79293392)中描述的较为清晰了。接下来则是设计数据类型和语言实现部分。类及类的实现#ifndef RENJU_H#define RENJU_H#include <iostream>#include <windows.h&g...原创 2018-02-15 10:07:01 · 2630 阅读 · 3 评论 -
C++ 动态数组类模板(向量容器)vector与STL用法总结
vector(向量)类模板定义在头文件vector中,提供五种构造函数,可以针对不同情况进行初始化:vector&lt;type&gt; name;//构造一个空的vector对象vector&lt;type&gt; name(length);//构造一个长度为length的vector对象,所有元素初始化为0vector&lt;type&gt; name(length,n);//构造一...原创 2018-02-15 15:03:15 · 2163 阅读 · 1 评论 -
C++运算符重载/总结
运算符重载的实质运算符重载其实是特殊形式的函数重载。在C++编译系统中,运算符的功能都是通过调用相应的函数实现的。这类函数被称为运算符函数,由关键字operator和对应的运算符组成函数名。运算符的操作数即为函数的形参。例如,两个int型数据相加,5+2;在编译时解释为operator+(5,2);。因此运算符重载,实质上就是运算函数函数的重载。值得注意的是,C++中不允许对”.”,”::”,...原创 2018-02-15 11:26:46 · 251 阅读 · 0 评论 -
辨析:C++中的常类型数据成员、常成员函数和静态成员、静态成员函数
常成员和静态成员都是C++类成员中需要特殊记忆和对待的,而这两个概念在中文上有些接近,容易混淆,因此特地整理一下,方便学习和记忆。关键字解析const,常类型,类型定义符,意味着值保持不变,作用是对变量的值进行保护,不允许修改,属于数据类型或函数类型的一种,是变量(函数)自身的性质,类似signed、unsigned关键字。static,静态类型,修饰符,主要用于控制数据的存储方式原创 2018-02-06 16:52:51 · 871 阅读 · 2 评论 -
说出来你们可能不信,但是数组名确实不是指针常量
这篇是一篇C语言劝退流教学文,看不懂的同学应该是劝退教学流的目标对象(写完了才想起来注一下,本文提到的“数组”和“数组名”字样,指的是数组左值表达式(array lvalue expression)或数组声明(array declaration)所声明的变量)首先,数组名不是常量指针,从两方面:类型方面,数组的类型是type[size],和常量指针类型type* c转载 2018-02-05 15:11:58 · 586 阅读 · 1 评论 -
浅谈C++中位域的用法
概念解析在计算机发展早期,内存及其有限。在C++中, 最小的数据类型也要占用1byte,而解决实问题的时候,对于一些取值有限的变量,可能只需要几位有限的位数即可完成存储需要,因此C++ 为了节省空间开销,允许在类中声明位域。即将多个此类数据打包,每个数据只使用一个字节中的几位,从而节省空间使用,但是代价则是在打包、解包过程中,需要执行额外操作,会增加运行时间。在类定义中定义位域的方式如下:原创 2018-02-06 15:54:56 · 1414 阅读 · 2 评论 -
C++ 常量指针、指针常量、引用和常引用的用法解析
今天学习C++的常量类型和引用,其中常量指针、指针常量、引用和常引用几个概念较为接近,特地整理一下。1.常量指针(pointer to const)常量指针,顾名思义,是指向常量的指针,其定义的一般形式为:const T * pointer_name =⌖ T为数据类型,target为T类数据。常量指针本身是可变量,而且,虽然名为常量指针,但其指向可以...原创 2018-02-05 15:09:26 · 3713 阅读 · 4 评论 -
准确详解:C/C++ float、double数据类型的表示范围及精度
今天复习C++遇到了float、double数据类型的表示范围及精度问题,花费了一些时间重新梳理了一遍,鉴于网上很多文章写的并不清晰,并且有不少疏漏错误之处,特结合个人理解仔细整理如下。要弄清楚这个问题,首先要搞清楚浮点数在内存中的存储方式。浮点数,区别于定点数,指的是小数点位不确定的的数据类型,其原理是将一个浮点数a用两个数m(尾数)和e(指数)来表示:a = m × b^e。其...原创 2018-02-05 13:03:42 · 46120 阅读 · 25 评论 -
cin、cout、cerr、clog用法区别及其在VS环境下的重定向
今天学习C++,发现C++中的输出流除了常用的cout,还有cerr和clog两种输出流对象,由于之前没有遇到过,所以特地查了一下用法,记录一下。1. cin、cout、cerr、clog的用法区别 经典教材《C++Primer》第五版中解释到:标准库定义了 4 个 IO 对象。处理输入时使用命名为 cin的 istream 类型对象。这个对象也称为标准输入。处理输出时使用命名为原创 2018-02-05 14:11:14 · 2537 阅读 · 1 评论 -
C++类的继承概念辨析:虚函数,虚函数表,抽象基类,纯虚函数,虚基类,虚继承
C++类的继承概念辨析虚函数和虚函数表动态绑定虚函数应用示例虚函数的实现:虚函数表虚函数的意义抽象类和纯虚函数虚基类和虚继承虚基类的代码实现虚函数和虚函数表在了解什么是虚函数之前,首先要理解什么是动态绑定。动态绑定动态绑定是C++类指针或引用的特性,当编译器遇到一个基类指针或引用时,并不直接确定其类型,而是在运行时根据其具体指向来调用对应的函数。为什么基类指针和引用可以指向派生类呢?因...原创 2019-06-28 22:39:48 · 781 阅读 · 1 评论