
c++
文章平均质量分 96
C++初学者555
55
展开
-
c++模板笔记
目录模板编译机制:模板分为函数模板和类模板:类模板:函数模板:非类型参数:默认模板参数:成员模板:实例化控制:类型转换:函数显示模板实参:尾置转换参数:可变长度参数:扩展包:特例化模板:模板编译机制:编译器遇到一个模板时不会产生参数,不会产生模板,直到运行期给模板参数,这时编译器就会产生相应的函数代码,这称之为实例化。只有模板实例化出...原创 2019-11-22 11:56:48 · 280 阅读 · 0 评论 -
c++运算符重载
运算符重载本质上就是函数,可以看做是一个具有特殊名字的函数,所以他和其他函数一样,有返回值,参数,函数体。如下:是一个运算符重载。operator是关键字。重载运算符几个要注意的特点运算符重载的方式有3种:(1)作为类的成员函数的运算符重载(2)作为非成员函数运算符重载 1)作为类的友元函数运算符重载 2)普通的函数的运算符重载...原创 2019-11-05 14:50:54 · 283 阅读 · 0 评论 -
关于c/c++定义声明全局变量的问题
简单的说你只要在头文件上定义全局变量几乎就全是错的,除非你能保证这个头文件只会包含一次(#ifndel只能保证一个文件里不会重复包含,但是在多个文件里就会都进得去,使得在链接阶段会出现重定义。),c++与C语言的差别,C语言inta ; int a ;能通过,(没有赋值时他认为是声明)。c++是通不过的他会认为是重定义。正确的全局变量定义是// .h#ifndelX...原创 2019-09-09 16:24:00 · 275 阅读 · 0 评论 -
条件编译防止头文件重复包含
#ifndef _XX_XX_H#define _XX_XX_H……#endif#ifndef // 当且仅当变量未定义为时为真#ifdif // 当且仅当变量已义时为真#endif // 结束指令第一次遇到包含head.h时 #ifndef的检查结果为真,预处理器将顺序执行后面的操作直到遇到#endif,此后 HEAD_H已定义,再次遇到时则为假。这种结构,它是为了防止重复包...原创 2019-09-09 11:44:47 · 1395 阅读 · 0 评论 -
.h文件,.c文件,.lib文件和dll的区别
大家都知道,.h文件是头文件,用来声明变量,函数的,而对应(其实你也不一定要对应,头文件写对就行,主要方便整理)的.c文件是函数,变量的定义。简单易懂的关系。那其他2个呢。.lib文件是二进制文件,是一个或者数个.c文件的集合,也就是说他有.c文件的作用:定义。那么,.c文件就有的功能为什么还要弄成.lib文件呢,使用还麻烦,要#pragmacomment(lib,"xxLib.lib");...原创 2019-09-06 18:46:04 · 2936 阅读 · 1 评论 -
c/c++位运算及其应用
位运算就是把其他进制的整数,换算成二进制再进行运算。主要有 &, |, , ^ , ~, <<, >> 。注意,位运算的优先度高于逻辑运算的&&,||,!的。如何求其进制的二进制我在上一篇已经总结过了,这里就不在重复了,具体就是用余数定理分解。链接地址:https://blog.youkuaiyun.com/qq_40140790/article...原创 2019-09-02 15:06:16 · 364 阅读 · 0 评论 -
C/C++运算符优先顺序
经常不记得运算符优选顺序,在这里记一下不记得了好回来翻看节省时间原创 2019-09-02 11:51:39 · 3423 阅读 · 0 评论 -
堆,栈等概念以及内存泄露,内存溢出,内存越界等问题
内存4区:在进程中内存被分为4个区域,分别是堆,栈,常量区,代码区。堆是我们程序员能够直接控制的内存区域(既是new malloc),栈是程序自己控制的区域,常量区是存放全局变量,字符串常量的区域以及存放代码的代码区。在这之中堆栈是我们要注视的重点。下面我们通过一个程序了解堆栈的生长方向以及数据的生长方向。int main(int argc, char* argv[]){ /...原创 2019-09-01 12:36:43 · 1569 阅读 · 0 评论 -
extren与.h头文件
#include <iostream>/*在test.cpp文件钟定义#include<stdio.h>int x = 12345;int test(){ printf("hello!!!\n"); return 0;}*/int test(); //当没有包含头文件时使用声明就可以用了,函数的定义和声明是不一样的,所以extern可以省略。...原创 2019-08-29 15:30:21 · 449 阅读 · 0 评论 -
#if 与if #ifdef的区别以及宏的几种用法
先来说一下宏的几个作用 宏的几种用法#if与if的区别:1、属性作用不同#if是条件编译,条件编译是根据 宏条件 选择性地编译语句;而if是条件语句,条件语句是根据条件表达式选择性地执行语句。2、执行时期不同(重点)#if是编译器在编译代码时完成的,if是在程序运行时进行的在程序运行时执行。3、使用不同#if后面不能写变量,if后面可以写变量。#if与#if...原创 2019-08-16 11:39:54 · 8040 阅读 · 0 评论 -
回调函数
了解回调函数之前我们先来了解函数指针,函数的入口和变量一样,也是写进内存的,使用时会被压进栈,这说明可以和对变量一样,用一个指针指向函数,这种指针称之为函数指针。函数指针:例如:void (*fp)(char *s)。使用typedef 转换typedef void (*Func)(int);写法是 返回类型(*新类型)(参数表),define进行替换时也是这种写法。由上可知,...原创 2019-08-15 15:59:00 · 138 阅读 · 0 评论 -
谷歌命名规范总结
总有一种感觉,自己写的代码和别人写的代码总是不同,感觉自己写的代码非常的丑陋,别人的非常的优美。有些自己写的代码几个月后自己都看不懂的情况出现 = = 。所以写代码不能任凭发挥龙飞凤舞,他们也要有自己的规范,才能统一,优美。下面是网上找到的谷歌代码的一些总结,仅供参考。作用域的规范1. .cc中的不具名命名空间可避免命名冲突、限定作用域,避免直接使用using提示符污...原创 2019-08-19 16:41:06 · 2545 阅读 · 0 评论 -
数据结构-----图
https://blog.youkuaiyun.com/daijin888888/article/details/73177325原创 2019-05-24 21:00:52 · 114 阅读 · 0 评论 -
数据结构-----树
目录1.树的术语2.2叉树/树的创建3.2叉树的遍历4.2叉树的构造5.哈夫曼树6.bst树7.avl树8.红黑树与avl树1.树的术语Root根顶端结点 The top node in a tree. Child子节点一个结点所连接的结点 A node directly connected to another node when ...原创 2019-05-20 17:29:26 · 253 阅读 · 0 评论 -
数据结构-----单链表,栈与队
总结单链表,链栈和环形队列的创建和使用1.单链表:typedef struct list{ int m; struct list *next; //struct list *rihgt} mylist;class List{ public: List() : plist(new mylist) { if (plist == nullptr) { ...原创 2019-05-20 15:27:19 · 228 阅读 · 0 评论 -
数据结构------内部排序法
总结一些算法的实现:交换排序*****1.冒泡算法typedef struct arr1{ int data; int key; //关键字项必须能比较大小}arr1;void BubbleSort(arr1 goal[], int n){ int i; int j; arr1 tmp; bool flag; for (i = 0; i < n - ...原创 2019-05-20 14:23:41 · 108 阅读 · 0 评论 -
windows网络编程------,重叠io,完成端口
在了解完成端口之前,我们先要了解重叠io(完成端口是基于重叠io上实现的)重叠io,即执行I/O请求的时间与线程执行其他任务的时间是重叠(overlapped)的。我们正常的的socket是socket到达后,系统通知我们socket到了,然后我们用recv把socket缓存里面的信息复制到内存上来,这个io的步骤就花了可观的时间,但cpu的占用却很少,就不能想个办法在我们读写的时候还能做其他...原创 2019-05-05 01:04:33 · 1366 阅读 · 2 评论