C++
Petty C++ - 对象切割
对象切割 Object Slicing 算是 C++ 的一个常见的多态问题。当一个派生类对象赋值给一个基类时,会丢弃掉派生部分,只保留基类对象部分,造成一些意料之外的结果。 对象切割示例
考虑下面的代码:
Copy
class Animal {
public…
Petty C++ - 算法调精 - 三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums [i], nums [j], nums [k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums [i] + nums [j] + nums [k] == 0 。请你返回所有和为 0…
Petty C++ 初始化
在 C++ 中,初始化或者初始值设定(initializers)是一种设置变量或对象初始状态的表达式,经常出现在对象的创建、成员的初始化、数组赋值等上下文中。 直接初始化
直接初始化可以使用()或者{}初始化变量:
Copy
int a(10);
int b{10…
Petty C++ 构造函数
构造函数是 OOP 中一类特殊的成员函数,用于创建对象并初始化成员变量,在 C++ 中,构造函数和类相同,没有返回值。 一般在以下情况下需要自定义构造函数:
自定义类的成员初始化方式
创建类的对象时调用函数
构造函数一般时public的,但也可以被声明为protecat…
Petty C++ 模板
模板是 C++ 泛型的一种强大特性,可以应用于类、函数、变量,模板的存在使得 coder 可以编写类型无关的代码,而在编译时生成一般的类、函数和变量。 模板基本形式
模板定义了一种蓝图,以生成任何可以操作任何类型的数据的类和函数:
模板的基本形式
以常见的函数模板为例…
Petty C++ - lambda
lambda 表达式在 C++11 之后的版本中是一种定义匿名函数的简洁语法。在一些长环境下,例如 STL 算法和异步操作,使用 lambda 作为回调函数非常自然和方便,并且 lambda 和 C++ 的函数式编程特性非常契合。 基本语法
一个完整的 lambda…
Petty C++ 指针
智能指针 C++ 中的智能指针是一种用于管理动态分配的对象的指针。它们提供了自动内存管理,可以帮助避免内存泄漏和悬空指针的问题。C++ 标准库提供了两种主要的智能指针:std::unique_ptr和std::shared_ptr。
std::unique_ptr:
std…
Petty C++ - 关键字
explicit 用于修饰类的构造函数。它的作用是防止隐式类型转换,只允许显式地调用构造函数进行对象的初始化。
当一个构造函数被声明为explicit时,它将禁止编译器执行隐式的类型转换来调用该构造函数。这意味着只能通过显式地调用构造函数来创建对象,而不能使用隐式的类型转换。
下…