2023年2月7日

The Semantics of Constructors——2.4 成员初始化列表

摘要: 2.4 成员初始化列表(Member Initialization List) 当你写下一个constructor时,就有机会设定class members的初值。要不是经由member initialization list,就是在constructor函数本体之内。 1. 在下列情况下,为了让你 阅读全文

posted @ 2023-02-07 00:32 七昂的技术之旅 阅读(18) 评论(0) 推荐(0) 编辑

The Semantics of Constructors——2.3 程序转化语意学

摘要: 2.3 程序转化语意学 #include "X.h" X foo() { X xx; return xx; } 一个人可能会对代码做出以下假设: 每次 foo()被调用,就传回 xx的值。 如果 class X定义了一个 copy constructor,那么当 foo()被调用时,保证该copy 阅读全文

posted @ 2023-02-07 00:31 七昂的技术之旅 阅读(22) 评论(0) 推荐(0) 编辑

The Semantics of Constructors——2.2 拷贝构造函数的构造操作

摘要: The Semantics of Constructors 2.2.1 Default Memberwise Initialization(默认的逐成员初始化) 如果class没有提供一个explicit copy constructor又当如何?当class object 以“相同 class 的 阅读全文

posted @ 2023-02-07 00:31 七昂的技术之旅 阅读(24) 评论(0) 推荐(0) 编辑

The Semantics of Constructors——2.1 默认构造函数的构造操作

摘要: The Semantics of Constructors 2.1 Default Constructor的构造操作 C++新手一般有两个常见的误解: 任何 class如果没有定义默认构造函数,就会被合成出一个来。 编译器合成出来的默认构造函数会显式设定“类内每一个数据成员的默认值”。 2.1.1 阅读全文

posted @ 2023-02-07 00:30 七昂的技术之旅 阅读(23) 评论(0) 推荐(0) 编辑

2023年2月6日

Effective C++ Item 11: 在operator=中处理自赋值问题

摘要: 一、定义赋值运算符函数需要注意的问题: 返回值类型声明为引用,并在函数返回前返回*this。因为只有返回引用,才能允许连续赋值。 传入参数应声明为常量引用,否则从形参到实参会多调用一次拷贝构造函数,降低代码效率。赋值运算符函数不会改变传入的实例的状态,因此传入参数应添加const关键字。 是否释放实 阅读全文

posted @ 2023-02-06 15:02 七昂的技术之旅 阅读(64) 评论(0) 推荐(0) 编辑

2023年2月5日

Effective C++ Item 3 ——尽可能使用const;const成员函数如何改变类的成员变量

摘要: C++ const 一、 语义约束 一个特定的对象不应该被修改,即是只读的。 二、用法 1. 修饰全局范围或命名空间内的静态对象 2. 修饰类的静态或非静态成员 3. 修饰指针或指针指向的数据 const出现在星号左边,则指针所指的内容为只读的。 const出现在星号右边,则指针自身为只读的。 co 阅读全文

posted @ 2023-02-05 22:33 七昂的技术之旅 阅读(112) 评论(0) 推荐(0) 编辑

2023年2月3日

C++性能优化——likely和unlikely分支预测

摘要: C++性能优化——likely和unlikely分支预测 References C++之likely和unlikely C++ likely-unlikely-directives 一、背景知识:流水线技术 现代CPU为了提高执行指令执行的吞吐量,使用了流水线技术,它将每条指令分解为多步,让不同指令 阅读全文

posted @ 2023-02-03 10:10 七昂的技术之旅 阅读(988) 评论(0) 推荐(1) 编辑

2023年2月2日

C++性能优化 —— __builtin_prefetch()数据预读

摘要: C++性能优化 —— __builtin_prefetch()数据预读 References __builtin_prefetch() Prefetching with __builtin_prefetch Data Prefetch 数据预取 数据预读对二分查找的优化 你见过哪些令你瞠目结舌的C/ 阅读全文

posted @ 2023-02-02 14:38 七昂的技术之旅 阅读(2581) 评论(0) 推荐(0) 编辑

2023年1月14日

Leetcode——双向链表和哈希表实现LRU缓存和LFU缓存

摘要: 一、Leetcode146.LRU缓存 1. 使用STL list和unordered_map实现 using KV = pair<int, int>; class LRUCache{ private: int cacheCapacity; list<KV> cacheList; unordered 阅读全文

posted @ 2023-01-14 17:38 七昂的技术之旅 阅读(103) 评论(0) 推荐(0) 编辑

c++ 多态

摘要: 一、什么是多态 多态(Polymorphism)源自于希腊语,意思是“多种形状”。在C++中,允许通过基类型的指针或引用去访问派生对象中的函数,并允许需要执行的函数在运行时进行延迟绑定(Late binding),这称之为多态。多态的前提条件是继承。 另外, 对于重载(overload)的实现也可称 阅读全文

posted @ 2023-01-14 17:37 七昂的技术之旅 阅读(103) 评论(0) 推荐(0) 编辑

导航