抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >

c++20模板元编程

c++20模板元编程tips 主模板 + 偏特化 AKA 定义默认行为 类型擦除 奇异递归 模板表达式 标签派发 静态面向”对象” 静态多态: 奇异递归 鸭子类型: e.g. golang中的interface 混入(mixin): 静态检查 类型擦除, 没有多态的通用处理(但有相同的interface) 变参模板 ...运算符表示解包, 在什么后面就是对什么的解包 tem...

CPP中的左值和右值概念

CPP中的左值和右值概念Overview 语法上能取地址就是左值 有名引用本身是左值, 无名右值引用(std::move()的返回)是右值 const左值引用(const T& val = 6)引用右值, 可以编译通过。 因为与右值不指代对象, 没有”存储”的语义没有冲突 性能上没差别, 引用都可以避免拷贝 左值引用可以使用const T&引用右值 右值引用可以使用std::...

多态Tree Easy Pieces

Preface多态Tree Easy Pieces: 强制类型转换 公共前缀 this指针偏移 这里讨论的cpp的多态是指父类虚函数的执行是由指针具体指向的对象而定。下面将围绕如下例子说明: 1234567891011121314151617181920212223242526272829class Shape {public: virtual void area(){...

CPP cheat sheet

小抄 stack 妙用structure bind case 1: 使用pair等时用p.first, p.second有很差的可读性。可以使用auto [name, age] case 2: 除了pair, 结构体也可以使用bind。绑定的顺序和结构体成员顺序有关 12345678struct Person { string name; int age;}...

现代cpp杂项

[TOC] cpp单例模式static标记, 返回引用。static标记后构造函数就只会触发一次。 1234567class A {public: static A &getinstance() { static A a; return a; }}; constexpr标注编译期就能确定(编译器执行), 从而不需要运行时, ...