
C++
文章平均质量分 70
feiyang0205
这个作者很懒,什么都没留下…
展开
-
Effective stl读书笔记
关联容器条款24 当关乎效率时应该在map::operator[]和map-insert之间仔细选择新增元素class Widget {public: Widget() { std::cout << "Widget::Widget()" << std::endl; } Widget(double val) { _val = val; std::cout << "Widget::Widget(double)"原创 2021-10-25 00:21:54 · 187 阅读 · 0 评论 -
C++智能指针
RAII的本质是用栈对象来管理资源,因为栈对象在离开作用域时,会自动调用析构函数原创 2021-08-01 16:25:42 · 337 阅读 · 0 评论 -
C++函数重载
输入输出流运算符重载原创 2021-07-31 16:55:52 · 2543 阅读 · 0 评论 -
C++类型转换函数
显示转换隐式转换原创 2021-07-30 18:17:42 · 123 阅读 · 0 评论 -
Makefile学习
Makefile初探例1:main.cpp#include "add.h"#include <iostream>int main(){ std::cout << add(3, 4) << std::endl;}add.cppint add(int x, int y) { return x + y; }Makefilemain:main.o add.o g++ -o main main.o add.omain.o:main.cpp g++原创 2021-07-03 10:40:40 · 150 阅读 · 0 评论 -
C++编译过程及动静态库
查看符号表的几种方式:nm 目标文件objdump -t 目标文件readelf -s 目标文件strings 目标文件原创 2021-06-02 23:42:20 · 520 阅读 · 3 评论 -
基于gtest、mockcpp写C++LLT测试入门级教程
一、googletest下载地址:https://github.com/google/googletest编译googletest:在根目录下执行cmake .make编译出的libgtest.a后面用注意:有可能编译会失败,是gtest需要C++11以上 可以在顶级的CMakeList.txt里加入 set(CMAKE_CXX_STANDARD 11)二、mockcpp下载地址:https://code.google.com/archive/p/mockcpp/downloads编译原创 2021-04-15 00:12:11 · 5297 阅读 · 2 评论 -
右值引用
移动语义:https://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyershttp://thbecker.net/articles/rvalue_references/section_01.html原创 2021-03-14 15:53:42 · 103 阅读 · 0 评论 -
C++左值与右值
一个很常见的误区就是左值时等号左边的值,右值时等号右边的值含义:①左值是指表达式结束后依然存在的持久化对象;右值是指表达式结束时就不再存在的临时对象②左值是存储单元内的值,即是有实际存储地址的;右值则不是存储单元内的值,比如它可能是寄存器内的值也可能是立即数。下图取自一个知乎的回答:区分:能否对表达式取地址,如果能,则为左值,否则为右值看几个例子:int a=1;int b=2;a和b 为右值a+b 为左值++a 为右值a++ 为左值string(“hello”) 为左值 (我的原创 2021-03-13 14:59:06 · 172 阅读 · 0 评论 -
C++各阶段特性
C++11-C++20各个标准的特性官方文档:https://en.cppreference.com/w/cpp/compiler_supportC++11特性总结:https://www.codeproject.com/Articles/570638/Ten-Cplusplus11-Features-Every-Cplusplus-Developer#autohttps://blog.youkuaiyun.com/jiange_zh/article/details/79356417C++1..原创 2021-03-09 12:57:53 · 132 阅读 · 0 评论 -
COW和SSO
参考资料:https://www.cnblogs.com/cthon/p/9181979.htmlstring 底层实现就是一个指针 可以看到无论string存储多少字符,sizeof(string)永远是一个指针的大小 32位 4字节 64位 8字节GCC 4.x.x string的实现是 COW 写时复制GCC 5.x.x string的实现是 SSO 短字符串优先测试写时复制的存在 std::string s1 = "hello,world"; std::string s2(s1);原创 2021-03-08 21:46:15 · 530 阅读 · 2 评论 -
C++虚继承
为什么引入虚继承?#include <iostream>class B{public: B() : _ib(10), _cb('B') {} virtual void f() { std::cout << "B::f()" << std::endl; } virtual void Bf() { std::cout << "B::Bf()" << std::endl; } int _ib; char _cb;};class原创 2021-03-02 00:23:23 · 102 阅读 · 0 评论 -
C++虚函数
该文是基于vs2019 32系统下一般继承(无虚函数覆盖)class A{public: virtual void f() { cout << "A::f()" << endl; } int _a;};class B : public A{public: void fb() { cout << "B::fb()" << endl; } int _b;};vs打印出的内存布局如下图内容复制出来如下1>class A s原创 2021-02-25 00:42:50 · 311 阅读 · 0 评论