![](https://img-blog.csdnimg.cn/20190920231736648.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++语法
文章平均质量分 74
C++语法总结
baboon_chen
My piano is the keyboard
展开
-
Google Test(gtest)新手入门
gtest),也称为Google C++ Testing Framework,是一个由Google开发的开源C++测试框架,提供了多种工具来支持C++代码的单元测试。提供了多种断言方法,可以用于测试函数、代码片段的预期行为。支持自动化测试,可以方便编写测试用例,并自动运行和输出结果。支持死亡测试(Death Test),测试代码在极端或异常条件下的行为表现。提供测试夹具(Test Fixture,一种用于编写可重复执行的测试用例的机制),使得测试用例便于重用。原创 2023-07-20 17:00:10 · 2226 阅读 · 0 评论 -
C++ map如何使用自定义关键字
C++ map如何使用自定义关键字?原创 2022-04-19 23:37:15 · 905 阅读 · 0 评论 -
C++虚函数表、虚表指针、对象内存分布
一、没有虚函数的对象,它的内存分布。#include <stdio.h>#include <stddef.h> // 定义了offsetof宏class Base {public: int m_val1; int m_val2; void fun() {}};int main(){ Base b; int offset1 = offsetof(Base, m_val1); int offset2 = offsetof(Base, m_val2);转载 2021-03-25 16:35:40 · 643 阅读 · 0 评论 -
C++中public、protected、private三种访问说明符
C++中public、protected、private三种访问说明符 一 充当类成员的访问说明符,加强类的封装性public成员:一切都可以访问;protected成员:只可以被派生类、本身访问;private成员:只可以被本身访问;友元:友元是例外,破坏了类的封装性,可以访问类的所有成员; 举例:#include <iostream>using namesp...原创 2019-12-17 16:16:55 · 492 阅读 · 0 评论 -
extern关键字
最近看到一个编写.so动态链接库(插件)时,需要在头文件中定义以下宏:#ifdef WIN32 #define LIBTASRDLLEXPORT extern "C" declspec(dllexport)#else #define LIBTASKDLLEXPORT extern "C"#endif#define MaxFetchOnce 10000LIBTASKDLLEXPO...原创 2019-10-24 10:10:10 · 171 阅读 · 0 评论 -
C++ void** 类型
在C++中: 0 或者字面值 nullptr 能转换成任意指针类型; 指向任意非常量的指针能转换成 void*; 指向任意常量对象的指针能转换成 const void*;参考:C++类型转换所以 void** 类型可以用以下方式理解:void **ppDefineBuffer = NULL; // 这是一个指向 void* 的指针。 或者说ppDefineBuffer是一个数组...原创 2019-10-16 10:51:52 · 1521 阅读 · 0 评论 -
C++11 文件I/O
一 流的概念C++语言中,I/O包括三种:标准I/O:对标准输入设备(键盘)和标准输出设备(显示器)的输入输出;文件I/O:对在外存磁盘上文件的输入输出;标准I/O:对内存中指定的字符串存储空间的输入输出;什么是"流"?“流” 就是 “流动”,是物质从一处向另一处流动的过程。 C++流是指数据信息从外部输入设备 和计算机内部(内存)输入输出的过程。C++中有3种输入输出流...原创 2019-09-11 23:08:14 · 370 阅读 · 0 评论 -
C++类型转换
隐式转换C++在对表达式求值时(包括赋值、算术运算、条件表达式),如果表达式中存在不同类型的变量,则会进行隐式转换。隐式转换会将所有变量转换成相同类型,并且,尽可能避免精度丢失。一 赋值转换当我们把一个非布尔类型的算术赋值给布尔类型时,初始值为0,则结果为false,否则结果为true。同样,布尔类型赋给算术类型时,true为1,false为0。如果是指针类型,指针为空则为false。...原创 2019-09-02 22:51:32 · 288 阅读 · 0 评论 -
C++运算符优先级
经常记不住C++运算符优先级? C++运算符优先级表优先级操作符描述例子结合性1() [] -> . :: ++ –调节优先级的括号操作符 数组下标访问操作符 通过指向对象的指针访问成员的操作符 通过对象本身访问成员的操作符 作用域操作符 后置自增操作符 后置自减操作符(a + b) / 4; array[4] = 2; ptr->age = 34...原创 2019-08-26 11:40:09 · 882 阅读 · 1 评论 -
C、C++ const对比
先从一段代码说起:int main(){ int *p; int const a = 10; p = (int *)&a; *p = 20; printf("a = %d\n", a); printf("*p = %d\n", *p); printf("the address of a: %p\n", &a); printf("the address ...原创 2019-07-29 11:32:08 · 131 阅读 · 0 评论 -
C++17 filesystem使用
问题a目录下有多个话单文件,话单记录以“,”分割,需要统计每个文件的字段有值的数量,无值的数量,输出日志文件;统计完的文件移动到备份目录。1 遍历文件目录2 操作每个文件: 统计有值字段、无值字段、 输出日志 将文件移动到备份目录代码只能在windows下通过:#include <filesystem>#include <iostream>#inc...原创 2019-06-26 10:15:32 · 4643 阅读 · 0 评论 -
C/C++中STATIC用法总结
一 C语言中static的用法 在C语言中,static的作用主要有两种: 第一个作用是限定作用域;第二个作用是保持变量内容持久化;1 限定作用域 (1) 全局变量在整个工程文件内都有效;静态全局变量只在定义它的文件内有效;静态局部变量只在定义它的函数内有效,只是程序仅分配一次内存,函数返回后,该变量不会消失;局部变量在定义它的函数内有效,但是函数返回后失效。 (2 在函数返回类型前...原创 2019-06-26 00:32:26 · 805 阅读 · 0 评论 -
C++命名空间
简介 命名空间是ANSIC++引入的可以由用户命名的作用域,用来处理程序中常见的同名冲突。一个良好的程序应该将程序中的所有实体(变量,类,函数)都放到某个命名空间里。 过去我们用的全局变量可以理解为全局命名空间,独立于所有有名的命名空间之外,它是不需要用namespace声明的,实际上是由系统隐式声明的,存在于每个程序之中。命名空间的使用using指令之声明整个命名空间u...原创 2019-06-25 09:18:12 · 120 阅读 · 0 评论 -
将二维数组转换成二级指针
最近在写一个顺时针打印矩阵的函数时,发现二维数组名不能传递给一个二级指针。#include <iostream>// 顺时针打印矩阵void PrintMatrixClockWisely(int** numbers, int rows, int columns){}int main(){ int matrix[3][4] = { {...原创 2019-04-12 14:23:17 · 6012 阅读 · 1 评论 -
sizeof运算符使用注意事项
一 C++内置类型所占字节数32位编译器类型所占字节bool1char1short2int4unsigned4long4unsigned long4long long8float4double8 long double 8 char * (指针) ...原创 2019-04-11 17:25:09 · 1866 阅读 · 0 评论