【C++拾遗】
空空的司马
微信搜『程序员加油站』,回复『pdfs』获取优质电子书
展开
-
C++继承和多态
一、继承C++继承的3种关系1、public继承 public继承是一种接口继承,子类可以代替父类完成接口所声明的行为。此时,子类可以自动转换成父类的接口,完成接口的转换。从语法的角度上说,public继承会保留父类中成员(成员函数和成员变量)的可见性,也就是说,如果父类中的某个函数是public,那么被子类继承后仍然是public。2、private继承原创 2016-03-07 16:02:46 · 1827 阅读 · 0 评论 -
堆和栈的区别
博客转自网上,经过简单整理。一、预备知识(程序的内存分配)一个由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack): 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) : 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全转载 2016-09-02 09:29:40 · 915 阅读 · 0 评论 -
拷贝构造函数和赋值操作符
#include using namespace std;class Sales_Item{public: //构造函数 Sales_Item() : units_sold(0), revenue(0.0) { cout << "构造函数" << endl; } //构造函数 Sales_Item(const std::string &book) : isbn(book原创 2016-08-30 20:26:37 · 976 阅读 · 0 评论 -
C++11 与 C99的兼容
C++对以下C99特性的支持纳入了新标准之中:1、C99中的预定义宏2、__func__预定义标识符3、_Pragma操作符4、不定参数宏定义以及__VA_ARGS__5、宽窄字符串连接1> c++11中与c99兼容的宏如下表所示:使用上述宏可以检查机器环境对C标准和C库的支持情况。#include using namespace std;int原创 2016-03-06 17:05:29 · 6362 阅读 · 0 评论 -
C++11 lambda表达式
lambda表达式是C++11新特征中的一部分。lambda和仿函数有些许相同的地方,仿函数在之前的博文中已经具体的提及到了。1、函数调用运算符(仿函数)仿函数的实质就是在类中重载了()运算符,使得对象调用()的形式与函数的调用形式基本一致。仿函数在之前的博客中已经有详细的解释,具体可查阅之前的博客。2、lambda表达式一个lambda表达式表示一个可以调用的单元。我们可原创 2016-03-12 14:03:29 · 1646 阅读 · 0 评论 -
让你不再害怕指针
(0)让你不再害怕指针--复杂类型说明要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一个类型里会出现很多运算符,他们也像普通的表达式一样,有优先级,其优先级和运算优先级一样,所以我总结了一下其原则:从变量名处起,根据运算符优先级结合,一步一步分析.下面让我们先从简单的类型开始慢慢分析吧:转载 2016-07-13 16:22:35 · 1178 阅读 · 0 评论 -
C++四大类型转换
C++ 是一门强类型语言(C语言是弱类型语言),不同自定义类型之间的转换必须进行显式转换。C++ 中提供了四种转换操作符来细分显式类型转换。因为是操作符,所以他们不属于任何的namespace,也就不用包含任何头文件就可以使用。static_cast <new_type> (expression)const_cast <new_type> (expression)reinterpret_cast原创 2016-07-19 17:17:41 · 2711 阅读 · 0 评论 -
函数指针
#include using namespace std;//函数的第一个参数表示为指向形式为 int (函数名)(int a, int b)的函数指针int abc(int (*p)(int x, int y), int a, int b){ return p(a, b);}int getMax(int a, int b){ if (a > b) return a;原创 2016-04-20 21:08:54 · 1163 阅读 · 0 评论 -
C++程序设计内存管理器(内存池)
一、New/malloc内存分配很慢C语言中的标准库函数malloc、free、calloc和realloc,以及C++中的new、new[]、delete和delete[] 操作符,是这两种语言中内存管理的关键之处。(注意一下C语言里面的是函数,在C++里面是操作符,这个据说在面试里面被问到过。)在执行时,malloc和new将向操作系统内核请求内存,而free和delete则请原创 2016-03-26 20:45:14 · 3631 阅读 · 0 评论 -
网络通信UDP(Linux/Windows)
1、Window下UDP首先,涉及到的API函数及相关的数据类型:(1)MAKEWORD()宏 用来将创建含有一个请求版本号的WORD值(2)windows下的套接字库WSAStartup() 加载套接字库WSACleanup() 清除套接字库上述两个函数通常成对使用(3)socket()创建套接字函数原型:SOCKET WSAAP原创 2016-04-04 10:37:35 · 2292 阅读 · 2 评论 -
C++内存管理(1)—分配和释放的四个层面
转载请注明出处 https://www.jianshu.com/p/8f5e4d215d971. 站在高处思考从一个比较高的角度来看,内存管理说到底就是使用OS提供的API或是使用运行在OS之上的Runtime或者更为上层的SDK对内存进行申请和释放。C/C++中内存管理是个经久不衰的话题,因为C/C++不像其它语言那样拥有自己的GC机制。这也是C/C++为人诟病的地方,特别对于使用C/C...原创 2019-01-15 23:48:49 · 966 阅读 · 0 评论