主页

C++解惑之重载篇

FAQ 为什么仅返回值不同不能执行重载决议? 因为有些函数的返回值可能并未使用, 如果同名同参数列表的函数仅返回值不同, 此时编译器就无法判断要使用哪个方法实例.

阅读更多

C++编译器会为class自动生成哪些函数

写在前面 总结 用户定义情况 编译器会生成 可以执行的操作(创建的对象) 未定义构造函数 默认构造函数和拷贝构造函数   仅定义默认构造函数 拷贝构造函数   仅定义拷贝构造函数 不生成构造函数   仅定义了有参构造函数 拷贝构造函数   定义了默认构造函数和有参构造函数 拷贝构造函数  

阅读更多

C++右值引用之move使用场景和 emplace 系列函数

先说结论, 并不是.. Scott Meyers ec = effective c++ mec = more effective c++ es = effective stl emc = effective modern c++ FAQ 返回值情形下需要为返回的参数或局部变量执行std::move(arg) 吗? 不需要, 因为存在(N)RVO, 即(具名)返回值优化, 需要注意的是 return 语句后面不要使用?: 之类的三目运算符, 这样编译器不会执行优化, 而是进行拷贝(不调用 move-ctor) 最佳实践就是直接写: return val; 什么时候需要写s...

阅读更多

Auto,decltype 的一些区别

写在前面 前置知识(复习) const 相关术语 顶层 const(top-level-const) 底层 const(low-level-const) const 结合指针 const 结合引用 auto 介绍 decltype 介绍 基本使用 带有括号的用法: 识别为引用 结合用法

阅读更多

Brpc 学习(二)基本 echo 服务器与并发版本实现

写在前面 学习一个框架, 首先是要去安装, 跑通这个框架的基本测试用例, 这次尝试搞一下 echo 服务器, 以及并发版本的实现, 这些例子在 brpc 代码库的example/目录下都有, 其实主要需要关注的就是echo_c++, multithread-echo_c++ 和streaming-echo_c++ 这三个例子, 包括了主要的 brpc 使用场景, 下面分别分析一下. 前置知识 gflags 是一个 Google 开源的命令行参数解析库, 默认采用长格式, brpc 中主要的命令行参数解析任务都是通过这个库实现的. 这里先提几个概念, 在一个主要的命令行程序调用过程中, 有下面几个术语, 看这个例子: (参考了 gflags 的文档, 位于gflags/doc/...

阅读更多

C++虚函数剖析 继承,多继承和虚继承情况

写在前面 前面分析了 C++类内的虚指针和虚表, 通过二级指针解引用的方式找到虚表, 由此访问虚函数, 相较于传统的死记硬背, 我一直觉得学习编程时候能看到具体的/确切的输入输出结果, 对于掌握某个知识点要更加有效, 如果你只是知道了虚函数的原理, 却又说不清楚虚函数是怎样寻址的, 即其在类内具体存放的位置, 那么还是不能知其全貌, 掌握全局的. 下面的内容基于前一篇文章的分析, 进一步探索 C++类的多继承情况和虚继承情况下虚表/虚指针/虚函数的具体位置, 以及对象模型的一些分布情况(通过成员指针), 这里只针对 g++/clang++编译器, 所以可能有些片面, 不过像这种编译器实现应该大同小异的(因为都是 ISO 出来的) 本文内容部分参考了<深度探索 C++对...

阅读更多

Brpc 学习(一)m1 macos构建方法

写在前面 实习阶段初次接触到 RPC 这样一种协议, 以及 brpc 这样一个很棒的框架, 但是当时没时间认真深入学习, 就是围绕使用 demo 开发, 还是有点不知其所以然的, 最近抽空来学习一下 brpc, 首要的一点就是在开发机上构建项目, 并且能够跑起来, 下面来看看如何在 m1 芯片的 MacOS 上跑起来 brpc, 并且成功运行 demo 程序: echo 服务器 环境: MacOS M1 arm64 clang 14(xcode) cmake zsh 源码下载 $ git clone https://github.com/apache/brpc.git $ git branch -a $ git checkout -b release-...

阅读更多

Total views.
您是Zorch的第 个小伙伴
Hits