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-...
共计 460 篇文章,58 页。
您是Zorch的第 个小伙伴
Hits