![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 91
csu_zhengzy~
做一只认真的小平头~
展开
-
条件编译(#ifdef #else #endif #if)
一、预处理 细说条件编译前,先了解下预处理过程。预处理过程读入源码,即对源码进行扫描,检查包含的预处理指令和宏定义,对其进行初步转换,然后再将产生的这种新源码提供给编译器。预处理过程还会删除程序中的注释和多余的空白字符。 预处理指令以#号开头,后跟指令关键字,指令将在编译器对源码进行编译之前对源码做某些转换。常用的预处理指令有如下:#空指令 //无任何效果#incl...转载 2018-01-17 08:51:12 · 706 阅读 · 0 评论 -
C++中的this指针的分析
作为面向对象的语言,C++程序通常涉及类的编写,而在类的编写中,this指针经常出现,本文旨在解释this指针的概念和用法。一、this指针的概念每个类成员函数都含有一个指向被调用对象的指针,这个指针被称为this,所以(a) this 即为指向调用对象的指针;(b) *this 即为指向调用对象的指针的解引用,即为本对象。二、this指针的用处this作用域是在类内...原创 2018-11-22 20:42:24 · 192 阅读 · 0 评论 -
C++中NULL和nullptr的区别
在编写C程序的时候只看到过NULL,而在C++的编程中,我们可以看到NULL和nullptr两种关键字,其实nullptr是C++11版本中新加入的,它的出现是为了解决NULL表示空指针在C++中具有二义性的问题,为了弄明白这个问题,我查找了一些资料,总结如下。一、C程序中的NULL在C语言中,NULL通常被定义为:#define NULL ((void *)0)所以说NULL实际上是...原创 2018-11-22 19:14:39 · 72171 阅读 · 22 评论 -
C++中const与指针、引用的总结
C++中函数的参数相比C语言中的函数参数要复杂的多,其中主要的原因是C++中引入了引用以及const限定符。这两个对象的引入,使得C++中的函数参数变得异常的复杂多变,每一种类型都具有比较适合的使用范围。一,引用引用是对象的别名,必须在初始化的过程中与一个具体的对象绑定起来,绑定完成以后就再也不能够修改了,引用貌似和指针有很大的相似性,但是引用是引用,是一个别名,而指针是一个变量,只是变量...原创 2018-11-17 09:52:17 · 586 阅读 · 0 评论 -
C++开发的TCP网络通讯工具类(兼容window和linux)
前段时间做项目用到了网络通讯,自己造了TCP通讯的轮子,能同时在window和linux下运行,并且封装成类,方便以后使用,考虑到自己也一直在互联网上获取资源,现在也把我做的轮子也分享给大家,欢迎参考~完整代码附在下面,如果大家不想复制,可直接从这下载:https://download.csdn.net/download/qq_18108083/10798550(1) XTcp.h#...原创 2018-11-21 15:05:09 · 1152 阅读 · 0 评论 -
C++开发的UDP网络通讯工具类(兼容window和linux)
前段时间做项目用到了网络通讯,自己造了UDP通讯的轮子,能同时在window和linux下运行,并且封装成类,方便以后使用,考虑到自己也一直在互联网上获取资源,现在也把我做的轮子也分享给大家,欢迎参考~完整代码附在下面,如果大家不想复制,可直接从这下载:https://download.csdn.net/download/qq_18108083/10798492(1)XUdp.h#i...原创 2018-11-21 14:53:37 · 1616 阅读 · 0 评论 -
C++中宏定义#define的用法
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但大家在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。一、#define命令剖析(1) #define的概念#define命令是C语...原创 2018-11-21 14:02:50 · 8759 阅读 · 1 评论 -
C++中函数后面加const修饰
我们定义的类的成员函数中,常常有一些成员函数不改变类的数据成员,也就是说,这些函数是"只读"函数,而有一些函数要修改类数据成员的值。如果把不改变数据成员的函数都加上const关键字进行标识,显然,可提高程序的可读性。其实,它还能提高程序的可靠性,已定义成const的成员函数,一旦企图修改数据成员的值,则编译器按错误处理。 const成员函数和const对象 实际上,const成员函...原创 2018-11-14 15:22:50 · 850 阅读 · 0 评论 -
c++中模板类的成员函数的声明与定义应该放在头文件里
今天尝试自己实现vector数据结构底层,在定义vector模板类的时候,还想像往常一样把类分为.h文件和.cpp文件,把成员函数的声明放在.h文件中,把具体实现放在.cpp文件中,结果在测试时发现在编译过程中报错。调试了很久,重视提示“无法解析的外部符号”,如图所示: 最终我找到了原因:引用C++primer的话:C++支持两种模板编译...原创 2018-11-14 14:08:36 · 8796 阅读 · 1 评论 -
C++中函数指针与函数对象
今天学习c++中vector数据结构的底层实现,发现遍历操作的实现之一用到了函数对象,花时间又复习了一下函数指针和函数对象。函数指针:是指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:用作调用函数和做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名) (形参列表);一般函数的声...原创 2018-11-13 20:08:00 · 446 阅读 · 0 评论 -
java的堆栈和c++堆栈的区别
堆栈(stack)和堆(heap)是应用程序中的两个地址空间,任何应用程序都有,和语言无关。堆栈空间是编译期静态分配的,如果你有C++和编译原理基础,看到程序就可以确定堆栈的分配情况了。堆空间是运行时动态分配的,在编译期没有办法确认分配空间的情况。它们的特点是:堆栈更快(如书上所说),但堆更灵活。举个例子,假设A类有两个派生类(B,C),在Java中,你可以这么写:A a;char c ...原创 2018-08-20 21:38:02 · 1664 阅读 · 0 评论 -
五大内存分区
在c/c++中,内存分成五个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 堆,就是那些由new分配的内存块,它们的释放编译器不管,由我们的应用程序控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 栈,就是那些由编译器在需要的时候分配,不需要的时候自动清除的变量的存储区。里面的变量通...原创 2018-08-22 17:20:59 · 262 阅读 · 0 评论 -
fopen()、fwrite()、fread()函数使用说明与示例
fopen()函数:1.作用: 在C语言中fopen()函数用于打开指定路径的文件,获取指向该文件的指针。2.函数原型:[cpp] view plain copyFILE * fopen(const char * path,const char * mode); -- path: 文件路径,如:"F:\Visua转载 2018-01-08 17:02:08 · 1595 阅读 · 0 评论 -
C++中int *a; int &a; int & *a; int * &a
C++中指针和应用的不同混用方式往往具有截然不同的语义,所以这里详细地对几种指针和引用的混用方式进行区分,指针和引用的混用常见的如下面几种:int i;int *a = &i; //这里a是一个指针,它指向变量iint &b = i; //这里b是一个引用,它是变量i的引用(别名)int * &c = a; //这里c是一个引用,它是指针a的引用...原创 2018-12-01 22:10:06 · 33575 阅读 · 12 评论