c++
ZHANGJNWEI
这个作者很懒,什么都没留下…
展开
-
g++编译器
指定c++标准:g++ -std=c++11 -o xr xr.cpp原创 2021-01-26 22:47:22 · 289 阅读 · 0 评论 -
C++库sigslot简介
sigslot地址:http://sigslot.sourceforge.net/简介:主要实现sig/slot模式的C++框架,实现组件之间松耦合。原理介绍:class Switch { public: virtual void clicked() = 0;};class Light() { public: void turnOn(); void turnOff(); void ToggledState()原创 2020-08-27 12:11:13 · 622 阅读 · 0 评论 -
C++继承和多态学习
new: 为对象分配存储空间,调用了constructor函数;delete触发destructor函数执行;destructor函数执行条件: 如果对象是自动变量,则退出定义对象的block时自动调用destructor函数 如果对象时静态变量,则程序终止时调用destructor函数 如果对象有new创建,只有直接调用delete才触发destructor函数调用 指针: 使用->操作符访问对象的成员函数; 对指针使用*操作符,获取对象本身;...原创 2020-08-21 18:23:37 · 107 阅读 · 0 评论 -
判断存储字节序
int main(int argc, char *argv[]){ union { short s; char c[sizeof(short)]; } un; un.s = 0x0102; if (sizeof(short) == 2) { if (un.c[1] == 1 && un.c[0] == 2) { printf("big-endien\n"); } el.原创 2020-08-20 07:00:20 · 106 阅读 · 0 评论 -
C++类和内存分配
静态成员初始化: 不可以在类的内部对静态成员进行初始化;类声明只是描述内存将如何分配,实际并没有进行内存分配;静态作为分离部分存储,而不是作为对象的一部分一同存储;初始化时指明域和和类型,关键字static不需要使用;在函数定义文件中对静态成员初始化。静态成员函数优点: 不需要由对象调用,直接使用类调用; 因为静态没有与对象关联,所以无法访问对象的成员,只能访问静态的成员自动化存储对象delete的顺序跟create顺序相反;C++自动如下成员函数: 如果没有定...原创 2020-08-19 18:28:54 · 243 阅读 · 0 评论 -
valgrind线程错误探测器
--tool=helgrind 启用helgrind线程错误探测工具,探测POSIX pthread原生线程;探测的三种线程错误类型:错误使用pthreadsAPI 存在潜在死锁问题 Data Race(在未加锁或同步情况访问数据)原创 2020-08-14 07:26:00 · 89 阅读 · 0 评论 -
valgrind检测C++程序内存泄露
memcheck是valgrind的默认使用工具;$ valgrind --leak-check=yes myprog arg1 arg2void foo(){ int *buf; buf = alloc(10, sizeof(int)); buf[10] = 10; // 访问非法内存 // 没有释放内存,导致内存泄露}int main(){ foo(); return 0;}v原创 2020-08-14 07:18:04 · 124 阅读 · 0 评论 -
cppcheck简易手册
## 检查单文件的错误cppcheck file1.c ## 检查文件夹中所有源文件cppcheck path## 使用过滤方式,选择过滤后的文件cppcheck src/ --file-filter=src/test*## 排除文件夹中特定文件或路径cppcheck -isrc/c src## 使用clang解析器替代默认解析器cppcheck --clang file ######## cmake和cppcheck配合使用1:cmake -DCMAKE_EXPORT.原创 2020-08-12 13:57:07 · 758 阅读 · 0 评论 -
vim插件--C++代码格式化插件
插件地址:https://github.com/rhysd/vim-clang-format安装前提:clang-format命令行yum install clang ##安装clang相关软件安装插件步骤:$ git clone https://github.com/rhysd/vim-clang-format$ cp vim-clang-format/doc/* ~/.vim/doc$ cp vim-clang-format/plugin/* ~/.vim/plugin$ c..原创 2020-08-05 15:25:59 · 708 阅读 · 0 评论 -
infer静态代码分析器使用
## 安装infer静态代码分析器VERSION=0.XX.Y; \curl -sSL "https://github.com/facebook/infer/releases/download/v$VERSION/infer-linux64-v$VERSION.tar.xz" \| sudo tar -C /opt -xJ && \ln -s "/opt/infer-linux64-v$VERSION/bin/infer" /usr/local/bin/infer## 分析项.原创 2020-08-05 10:56:55 · 189 阅读 · 0 评论 -
C++基础疑难点
指向常量的指针不能用于改变其所指对象的值,存放常量对象的地址,只能使用指向常量的指针。允许令一个指向常量的指针指向一个非常量对象。指向常量的指针仅仅要求不能通过该指针改变对象的值。指针是对象而引用不是,允许把指针定义为常量。常量指针必须初始化,完成初始化后值(指向的地址)不能改变;将*放在const之前说明指针是一个常量。从右向左阅读,弄清楚声明的含义。指针是一个对象,同时可以指向另一个对象,顶层const表示指针本身是常量,底层const表示指针所指对象是一个常量。用于声明引用的con原创 2020-07-14 06:47:06 · 165 阅读 · 0 评论 -
使用 Google Test 测试框架
googletest基础:googletest断言用于组合函数调用,使用断言测试function或者class。断言失败,googletest打印source文件和行号。ASSERT_*类型断言在执行失败时生成错误信息并终止函数的执行。EXPECT_*在失败时打印非严重信息,继续function流程。----------------------------------------------------------------------------------------------------原创 2020-07-13 11:04:51 · 278 阅读 · 0 评论