
C++
Baymaxly
一名大二的在校生呀,加油!!!
展开
-
【Cpp】alignof()与alignas()
一、继承C使用的内存对齐C++中继承了C语言里的内存对齐机制,也可以程序员进行干预,如下文章:往小对齐:#pragma pack的使用往大对齐:attribute((aligned(n)))二、alignof()与alignas()alignof和alignas是C++11开始新支持的关键字,其中:alignof用来测定变量或者类型的字节对齐数alianas用来往大改变字节对齐,使...原创 2020-02-18 23:33:42 · 1256 阅读 · 0 评论 -
【C/CPP】assert断言与static_assert静态断言
一、断言assert是一个宏函数,其原型定义在assert.h中:#ifdef NDEBUG#define assert(condition) ((void)0)#else#define assert(condition)#endif一般在调试版本中使用,作用是在程序运行的时候将条件condition的表达式的逻辑值与0进行比较,若相等,则在标准错误输出上输出实现指定的诊断信息,...原创 2020-02-18 22:53:10 · 1799 阅读 · 1 评论 -
【Cpp】NULL与nullptr(C++11起)
一、先来谈谈NULLNULL是一个宏,其定义如下#ifndef __cplusplus#define NULL (void *)0#else#define NULL 0#endif在C语言中,NULL就是(void *)0,通常用于指示指针没有有效操作对象,以避免野指针的出现int *p = NULL;/*业务代码*/if(NULL != p){ /*解引用p*/...原创 2020-02-18 21:19:24 · 1317 阅读 · 0 评论 -
【Cpp】inline关键字
一、保留了C中inline的特性详见:预处理、宏定义、内联函数关键点如下:inline必须与函数定义体放一起,声明处可不放(保险做法为都放)inline函数一般是直接在头文件中直接定义,无需额外声明inline函数可以在同一个项目中多次定义,只要函数体相同并且同一个源文件内未重复定义inline函数是否展开得看编译器心情递归函数不应被inline,过长(超10行)的函数不应该i...原创 2020-02-16 23:50:19 · 805 阅读 · 0 评论 -
【Cpp】C++中的union
一、继承C语言的unionC++中的共用体也是从C中继承过来的,沿用了C中的所有特性二、C++中union的提升C++中在定义共用体变量的时候也可以省略union关键字(类似enum),直接类型名 变量名C++中,union的成员还可以是简单对象,但是对象不能包含自定义构造函数和析构函数在C语言中,也可以通过函数指针实现类型的功能:union myunion{ void...原创 2020-02-16 23:12:20 · 908 阅读 · 0 评论 -
【Cpp】C++的enum
一、继承C语言的enumC++中的枚举是直接从C语言中继承过来的,在这过程中,也做了改进。如C语言中定义一个枚举类型的变量必须加上enum enum QuarterFirst{JAN, FEB, MAR};//定义类型QuarterFirst enum QuarterFirst quarter1 = JAN;//定义QuarterFirst类型的变量quarter1这在定义变...原创 2020-02-16 22:24:35 · 1642 阅读 · 0 评论 -
【Cpp】引用的本质
一、什么是引用引用是C++中的一个新的语言特性,从表面来说,引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。引用的声明如下:类型标识符 &引用名 = 目标变量名;这里面的&不是位运算、不是取地址,而是一个引用的标识符,可以认为是一个“类型标识符 &”类型,类型标识符是指目标变量的类型。如:int a = 10;int &b = ...原创 2020-02-16 19:48:34 · 759 阅读 · 0 评论 -
【Cpp】bool关键字和运算符代用关键字
一、bool关键字就是一种新的类型,只有ture(1)和false(0)两种逻辑值,其中,非零为ture(1),零为false(0)。用法和int、double等数据类型是一样的,比如说bool类型的变量可以进行数据运算、可以作为函数返回值、可以定义bool *类型的指针…#include <iostream>int main(void){ bool a = 0.55...原创 2020-02-16 14:19:48 · 1479 阅读 · 0 评论 -
【Cpp】C和C++混合编程
一、混合编程杂绪1.1 为什么需要混合编程Cpp是从C演变过来的,C有很多优秀成熟项目和库,没必要在C++中重写,C++程序可以直接调用调用庞大项目划分后一部分适合用C(底层),一部分适合用C++(中间层、上层)1.2 混合编程的支撑编译型程序的编译过程:源文件->目标(库)文件->可执行程序->镜像文件任何编程语言执行时都必须是可执行程序,所以都必须先被编译成...原创 2020-02-15 21:49:52 · 6713 阅读 · 1 评论 -
【C++】命名空间namespace详解
一、命名空间的引入C++中,名称(name)可以是符号常量、变量、宏、函数、结构体、枚举、类和对象等等。而在大型工程中,难免会有重名的现象,命名空间namespace,就是C++引入的一种解决名称冲突的机制1.1 如何解决命名冲突C语言中C语言中是通过人为操作符号名称、限制符号的作用域和链接属性来完解决名称冲突的。比如:同一个C文件中的全局变量/函数加一个统一的前缀通过作用域的掩蔽...原创 2020-02-14 17:29:59 · 7020 阅读 · 0 评论