
C++
Osean_li
写是更好的思考,教是最好的学!
展开
-
C++-模板的声明和实现为何要放在头文件中
前言常遇到询问使用模板到底是否容易的问题,我的回答是:“模板的使用是容易的,但组织编写却不容易”。看看我们几乎每天都能遇到的模板类吧,如STL, ATL, WTL, 以及Boost的模板类,都能体会到这样的滋味:接口简单,操作复杂。在我需要自己编写模板类时,我首先遇到的事实却是“传统”编程方法(在*.h文件声明,在*.cpp文件中定义)不能用于模板。于是我花费一些时间来了解问题所在及其解决...原创 2020-01-08 11:12:38 · 1116 阅读 · 0 评论 -
C++结构体与数组的数据转换-下(socket)
引言 经过上章的讲解,已经知道了内存对齐。 那么我们言归正传(一) 结构体–>数组 (二)数组–>结构体 由于数组存储是连续的,所以在相互转换的时候内存也要对齐转换实例结构体–>数组struct ST_Temp{ int iAge; int iYear; int iMonth;};ST_Temp temp;temp.iAg...原创 2018-06-04 22:44:22 · 2604 阅读 · 2 评论 -
C++内存管理图解
链接知识 内存管理 https://blog.youkuaiyun.com/ZLK961543260/article/details/77971236内存图解图一图二代码区:存放CPU执行的机器指令,代码区是可共享,并且是只读的。数据区:存放已初始化的全局变量,静态变量(全局和局部),常量数据。BBS区:存放的是未初始化的全局变量和静态变量。 - 栈:。内存由编译器在需...原创 2018-06-02 14:12:06 · 1409 阅读 · 2 评论 -
C++面试题大华/网顺总结
面试无疑是对自己能力的一种检测,通过面试过程中出现的问题,知道自己的不足,从而提高。下面将对一些面试题的总结试题首先考验通配符的使用int _tmain(int argc, _TCHAR* argv[]){ int a = 22; int b = 333; printf("%3d %3d",a,b); //打印的内容 //暂停,直到任意键按...原创 2018-06-30 15:14:43 · 1578 阅读 · 0 评论 -
Windows编程
引言在进行PC程序开发的时候,我大多数首选的是Qt,但是Windows编程也很重要。下面就介绍下Windows编程的主要概念Windows编程的主要概念句柄一个句柄值是指使用的一个欸一的整数值,即一个4字节(64位程序中位8字节)长度的数值,来便是应用程序中的不同对象和同类对象中的不同实例。MFC中没建立一个窗口,这个窗口就会有一个窗口句柄来唯一标识它。但是句柄不是一个指针。句柄和指针...原创 2019-01-08 22:38:24 · 5578 阅读 · 1 评论 -
UE4使用以及打包注意事项
引言在对UE4代码编译后,没有问题就要进行打包处理了。但是在打包的时候,往往都会有问题。那么怎么来解决这个问题的,下面就来说说。UE4编译配置参考虚幻引擎 4 采用了一种自定义的编译方式,通过我们的 UnrealBuildTool 工具(UBT)。编译配置 - 状态描述Debug (调试)该配置在调试模式中同时编译引擎和游戏代码。DebugGame (调试游戏)...原创 2019-03-11 11:14:16 · 5402 阅读 · 0 评论 -
c++ 智能指针用法详解
引言对于C++ 而言,新的特性,会大大的节约开发的周期与维护,所以就学习下。参考学习c++ 智能指针用法详解转载 2019-03-21 14:05:39 · 332 阅读 · 0 评论 -
windows注册表结构与开发-基础知识
注册表中记录了许多的设备信息和配置信息,在开发中,往往会通过他们来获取设备信息。和处理一些系统的设置。所以有必要知道操作哪个键值。原创 2019-04-18 10:18:24 · 727 阅读 · 0 评论 -
C++ fstream、ofstream 、ifstream 文件流读写文件
引言https://blog.youkuaiyun.com/f110300641/article/details/84334760使用fstream在指定文件流模式的情况下也可以自动新建文件:在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O。stream这个类有两个重要的运算符:1、插入器(<<) 向流输出数据2、析取器(&g...原创 2019-08-28 09:37:14 · 804 阅读 · 0 评论 -
C++结构体与数组的数据转换-上(内存对齐)
引言 在进行通信的时候,传送的往往都是一些数组类型,而我们为了方便对数据的管理,往往都是使用结构体来存储数据。那么就涉及到如何把数组转换成结构体。1.实现依据说到底数据都是在内存中存储的,这就要考虑到几个问题内存对齐内存连续1.1内存对齐一,基本概念字节对齐:计算机存储系统中以字节为单位存储数据,不同数据类型所占的空间不同,如:整型(int)的数据占4个字...原创 2018-06-03 19:34:28 · 5412 阅读 · 0 评论 -
C++:在堆上创建对象,还是在栈上?
引言 在我们使用基本的数据类型或者自定义数据类型创建³³变量或者对象的时候的英文在堆上还是栈上?在堆上与栈上有什么区别?在对象之间赋值的时候,什么时候需要重载“=”号,或者使用memcopy?堆与栈的区别堆和栈的区别在于两点:生命周期性能第一点才是我们需要着重考虑的。由于栈的特性,如果你需要一个具有比其所在的上下文更长的生命周期的变量(包括成员变量),只能在...原创 2018-05-27 17:37:27 · 1277 阅读 · 0 评论 -
C++深度思考-引出赋值、浅拷贝与深拷贝
引言笔者已经使用C++开发有近一年之久了,但是在对对象之间赋值的时候,出现了非常奇怪的现象,同样的数据在进行赋值后,结构却是不同的。灵异事件发生了,把 “=” 赋值,改成memcopy 解决了问题。但是我用了这么久的 “=” 难道失灵了,满脑子的疑惑。闲下来的时候看了看C++书籍,我在浅拷贝与深拷贝中找到了答案。下面就说说他们赋值、浅拷贝和深拷贝我们在开发中经常会用到运算符 “=”...原创 2018-05-06 13:50:43 · 547 阅读 · 0 评论 -
C++与C#的区别
1. 在C#中存在public class 而在C++中没有。2.class中的成员默认是private,而struct的成员默认为public。3.int16_t是C++中的 C#是Int164.二者的数组定义的方式不一样。@public byte[] buffRev;C# C++ byte buffRev[1000];5.C#不像C++,他本原创 2017-01-16 21:29:09 · 672 阅读 · 0 评论 -
C++04_类中不写成员函数易犯错误模型
1.成员只是做为初始化来用。成员函数作为算数的执行。例如#includeusing namesape std;class circle{public:double r;double pi = 3.1415926;double area = pi*r*r};int main(){circle c1;cout cin>>c1.r;原创 2017-01-16 21:30:57 · 401 阅读 · 0 评论 -
套接字的使用
1.当你创建一个套接字的时候你需要指定三个参数:通信类型,命名空间和协议。2.Stream Socket与Datagram Socket不同,它有一个永久性的链接,可以确保数据可靠的发送到对方。但是Stream Socket所占的资源更多。3.IPPROTO_TCP = 6,第三个参数.这里指使用tcp协议4.端口号用于区分同一台主机上的不同套接字。原创 2017-01-16 21:39:29 · 506 阅读 · 0 评论 -
断言
1.首先assert是个宏而不是函数,它的作用是什么之前。 起着测试条件和终止程序的作用。2.如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的 语句,它的作用是终止程序以免导致严重后果,同时也便于查找错误。3.所需头文件:#include 报告错误的条件:assert(0);4.何时需要使用断言原创 2017-01-17 09:00:22 · 461 阅读 · 0 评论 -
C++函数重载
1.什么是函数重载;函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。看下面的一个例子,来体会一下:实现一个打印函数,既可以打印int型、也可以打印字符串型。在C++中,我们可以这样做:#includeusing namespace std;void print(int i){ cout原创 2017-01-17 09:02:18 · 342 阅读 · 0 评论 -
C++学习笔记
C语言与C++语言的区别++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++1.C语言过程化编程首先确定计算机应采取的操作,然后使用编程语言来实现。 按照一系列的流程生成特定的效果。2.C语言是自顶向下的设计,理念是将大程序分解成小程序,易于编写模块。 鼓励还发程序函数。3.C原创 2017-01-17 09:03:13 · 308 阅读 · 0 评论 -
枚举精华
1.C/C++中的enum枚举的用法如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型。举个例子来说明一吧,为了让大家更明白一点,比如一个铅笔盒中有一支笔,但在没有打开之前你并不知道它是什么笔,可能是铅笔也可能是钢笔,这里有两种可能,那么你就可以定义一个枚举类型来表示它!2.关于enum的定义enum Fabric{ Cotton原创 2017-01-17 09:06:46 · 456 阅读 · 0 评论 -
C++开发笔记
内存与释放malloc()与free()是C语言的标准库函数new与delete是C++的运算符,可以用于申请动态内存和释放内存。在实现上实际上是调用了malloc()与free()函数,又进一步做了封装,相似却不同。两者在创建对象时,都有可能造成内存的泄露,但是new可以定义到那一行。对于非内置类型而言,在创建对象时不止是分配内存,还会自动执行构造函数进行初始化,在对象消亡之前自动执行析构函数原创 2017-07-24 22:44:29 · 345 阅读 · 0 评论 -
关于动态链库与动态链接库的心得
在windows下一般可以看到后缀为dll和后缀为lib的文件,但这两种文件可以分为三种库,分别是动态链接库(Dynamic-Link Libraries),目标库(Object Libraries)和导入库(Import Libraries),下面一一解释这三种库。目标库又叫静态链接库,是扩展名为.LIB的文件,包括了用户程序要用到 的各种函数。它在用户程序进行链接时,“静态链接”到可执行程序文原创 2017-07-26 22:40:01 · 582 阅读 · 0 评论 -
从零开发B/S机架应用程序(五)
总结在前面的两篇文章中介绍了UDP与TCP的使用,通过两种协议的比较,结合我们要开发的内容,功能的要求,我们采用TCP协议通信。实现TCP/IP协议的通讯原理首先要理解基本的原理,2台电脑间实现TCP通讯,首先要建立起连接,在这里要提到服务器端与客户端,两个的区别通俗讲就是主动与被动的关系。 一个服务器可以接受多个客户端的连接,但是一个客户端只能连接一台服务器。 很简单的例子,你一台计算机开3个原创 2017-11-21 22:05:57 · 544 阅读 · 0 评论 -
什么是对象和类
引入 X下午在聊天的时候,同事提问我什么是对象,我一下子不知道怎么回答了每天都在用到类,对象。却不知道什么是对象。书面上对象和类解释对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则,计划或事件。对象具有状态,一个对象用数据值来描述它的状态。 ,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一...原创 2018-04-16 23:13:40 · 613 阅读 · 0 评论 -
C++中的箭头
c++中“箭头(->)”和“点号(.)”操作符的区别 ****************************************************************A *p则使用:p->play(); 左边是结构指针。A p 则使用:p.paly(); 左边是结构变量。总结:箭头(->):左边必须为指针;点号(.):左边必须为实体。原创 2017-01-16 21:27:32 · 5866 阅读 · 0 评论