自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 递归函数的设计技巧

这是一个比较简单的题目。现在按照上面的步骤进行解析:首先,明确递归函数的定义。这里我们给递归函数f(n)的定义就是返回n的阶乘。然后,实现边界条件下的程序逻辑。这里很明显当n等于1时,就是边界条件,返回1的阶乘也就是1。最后假设递归函数调用返回结果是正确的,实现本层函数逻辑。数学归纳法中的第三步是假设p(k-1)正确,证明p(k)正确。设计递归函数的第三步和这一步有着异曲同工之处。假设f(n-1)就是正确的返回n-1的阶乘,如何实现f(n)的阶乘呢?很简单的公式:f(n)=f(n-1)*n。

2023-07-08 22:15:27 346

原创 c++复制与拷贝构造函数

下面的程序运行结束会发生崩溃。问题出在拷贝构造函数上。在这种情况下,`string` 和 `second` 对象将共享相同的 `m_buffer` 指针,这意味着它们指向相同的内存块。然而,`second` 对象仍然保持着指向已释放内存的指针,当尝试访问 `second` 对象时,会导致未定义的行为,最终导致程序崩溃。在这个自定义的拷贝构造函数中,将 `m_size` 和 `m_buffer` 成员变量从源对象 `other` 复制到新对象中,确保新对象有独立的内存空间。

2023-06-26 14:49:52 100

原创 c++智能指针

多个 `std::shared_ptr` 可以指向同一个对象,对象的内存会在最后一个 `std::shared_ptr` 被销毁时释放。2. `std::unique_ptr`:是一种独占ptr` 在复制或赋值时会进行所有权的转移,不允许多个 `std::unique_ptr` 指向同一个对象。C++标准库提供了两种常见的智能指针:`std::shared_ptr` 和 `std::unique_ptr`。`std::unique_ptr` 提供了更轻量级的内存管理,并且可以在适当的情况下转移所有权。

2023-06-26 10:17:24 76

原创 C++this

总结来说,`this` 是一个指向当前对象的指针,在成员函数内部使用,用于访问当前对象的成员变量和成员函数。当一个对象调用自己的成员函数时,`this` 指针被隐式地传递给成员函数,使得成员函数可以访问当前对象的成员变量和成员函数。在上述代码中,`this->value` 表示访问当前对象的成员变量 `value`,而不是函数参数 `value`。2. 在成员函数中返回当前对象的引用:可以使用 `return *this` 来返回当前对象的引用,从而支持链式操作。它的类型是指向当前类类型的非常量指针。

2023-06-25 15:05:29 79

原创 c++运算符及其重载

通过重载 `+` 运算符,我们可以像操作内置类型一样,使用 `+` 运算符对 `Vector` 对象进行相加操作。C++ 支持重载大部分的运算符,如算术运算符(`+`、`-`、`*`、`/` 等)、比较运算符(`<`、`>`、`==`、`!=` 等)、赋值运算符(`=`)、下标运算符(`[]`)等。其中,`operator运算符` 是要重载的运算符,可以是内置运算符或自定义的运算符。例如,`+` 代表重载加法运算符,`<<` 代表重载输出流运算符。例如,可以重载 `+` 运算符,实现自定义类型的相加操作。

2023-06-25 14:36:37 33

原创 c++三元操作符

在 C++ 中,三元操作符(Ternary Operator)也称为条件运算符(Conditional Operator),用于根据条件选择不同的值或执行不同的操作。三元操作符在简单的条件判断和选择赋值的情况下很有用,可以提高代码的简洁性和可读性。如果条件表达式的值为真(非零),则选择表达式1的值作为整个表达式的结果;如果条件表达式的值为假(零),则选择表达式2的值作为整个表达式的结果。在上述示例中,如果 `a` 大于 `b`,则将 `a` 的值赋给 `max`;否则将 `b` 的值赋给 `max`。

2023-06-24 21:00:48 475

原创 C++mutable

虽然 `getValue` 函数被声明为 `const`,即不会修改类的状态,但由于 `counter` 被标记为 `mutable`,因此在 `getValue` 函数内部可以对其进行修改。使用 `mutable` 关键字的典型场景是当类的成员变量需要在某些情况下被修改,即使这些修改发生在 `const` 成员函数中。`mutable` 关键字的作用是允许被修饰的成员变量在 `const` 成员函数中被修改,即使这些函数被声明为 `const`。

2023-06-24 18:03:47 2766

原创 C++const

在上述示例中,函数 `printMessage` 接受一个 `const` 引用类型的参数 `message`。这意味着在函数内部,不能修改 `message` 的值,以保证函数不会对传入的参数产生副作用。在上述示例中,`printData` 函数被声明为 `const` 成员函数。这表示该函数不会修改类的成员变量,因此可以在 `const` 对象上调用该函数。在 C++ 中,`const` 是一个关键字,用于声明常量。在上述示例中,函数 `getValue` 的返回类型被声明为 `const int`。

2023-06-24 17:48:01 51

原创 c++字符串

std::string` 类的使用使得字符串处理更加方便和灵活,避免了手动处理字符数组的长度和内存管理。可以参考 C++ 标准库的文档以获取更多关于 `std::string` 类的详细信息和功能。C++ 提供了 `std::string` 类来处理字符串,它是 C++ 标准库中的一个强大且易于使用的字符串类型。`std::string` 类提供了许多成员函数和操作符,用于处理字符串的操作,包括字符串的连接、查找、替换、比较、提取子串等。

2023-06-24 10:57:06 66 1

原创 c++接口

在上述示例中,`AbstractShape` 是一个抽象类,包含了纯虚函数 `draw()` 和 `area()`,定义了图形类的接口。抽象类是一个包含至少一个纯虚函数的类,无法直接实例化,只能作为基类使用。在C++中,接口(Interface)是一种抽象的概念,用于定义类或模块对外提供的操作、方法或功能的集合。纯虚函数通过在声明末尾添加 `= 0` 来标记,它们没有默认的实现,只提供了接口的定义。接口的使用可以实现多态性,使得不同的类可以使用相同的接口来进行操作,增强了代码的灵活性、可扩展性和可维护性。

2023-06-23 18:12:32 3490

原创 c++虚函数

3. 纯虚函数(Pure Virtual Function):虚函数也可以被声明为纯虚函数,即没有函数体的虚函数。虚函数表是一个存储指向虚函数的指针的表格,每个包含虚函数的类都有自己的虚函数表。当对象被创建时,会分配一个指向正确虚函数表的指针,并在运行时使用它来调用正确的虚函数。通过在基类中声明为虚函数,派生类可以对其进行覆盖,从而在运行时根据对象的实际类型调用相应的函数。虚函数的使用可以通过基类指针或引用来实现多态性,使得在运行时根据对象的实际类型来调用适当的函数。

2023-06-23 17:46:52 115 1

原创 c++继承

在派生类中,可以访问基类中的公有成员和保护成员,可以通过继承得到基类的属性和行为。3. 私有继承(Private Inheritance):在私有继承中,派生类继承基类的保护成员和公有成员,但不继承基类的私有成员。2. 保护继承(Protected Inheritance):在保护继承中,派生类继承基类的保护成员和公有成员,但不继承基类的私有成员。1. 公有继承(Public Inheritance):在公有继承中,派生类继承基类的公有成员和保护成员,但不继承基类的私有成员。

2023-06-23 16:23:32 64

原创 c++构造函数

构造函数

2023-06-23 14:51:15 41

原创 c++枚举

c++枚举

2023-06-23 12:16:18 156 1

原创 c++中的静态(static)

每次调用 `countCalls()` 函数时,`counter` 的值会自增,并在函数调用时保持其值。在C++中,局部静态变量是在函数内部定义的静态变量。与普通局部变量不同,局部静态变量在函数首次执行时初始化,并且在整个程序的生命周期内保持其值,而不是每次函数调用时重新创建和初始化。因此,如果在不同的函数中使用同名的局部静态变量,它们将共享相同的存储位置和值。2. 生命周期:局部静态变量的生命周期与程序的生命周期相同,即在整个程序执行期间保持其值,而不是在函数调用结束后被销毁。// 定义局部静态变量。

2023-06-22 22:40:48 2526 1

原创 c++类的基础用法

实现了一个简单的日志类。

2023-06-22 19:54:15 19 1

原创 c++引用

引用本身不占用内存。

2023-06-22 17:46:05 39 1

原创 c++指针

【代码】c++指针。

2023-06-22 16:02:09 26 1

原创 c++if语句

下面是一个简单的if语句。

2023-06-22 09:35:12 40

原创 如何在VisualStudio中调试代码

点击左侧边栏或者按F9,。页面如下所示箭头指向的代码,表示将要执行 ,而不是已经执行!逐语句F11,意思是进入这一行代码的函数中逐过程F10,意思是从当前函数调到下一行代码跳出shift+F11,意思是跳出当前函数,回到调用这个函数的位置。

2023-06-21 22:34:27 854

原创 c++头文件

头文件通常包含函数,变量声明,宏定义和类型定义。通常将声明语句放在头文件中,可以在多个源文件引用这些声明,避免重复编写代码。

2023-06-21 21:16:08 21

原创 c++函数

在实际开发中,为了不重复编写代码,通常把要经常使用的代码写成一个函数。这样需要使用时,直接调用此方法即可。一句话说,函数的主要目的是防止代码重复。

2023-06-21 20:11:18 9

原创 c++变量-基础

通俗来说,变量就是为了使用内存中的数据,包括存储,删除,修改,给这些数据取的名字。

2023-06-21 19:50:45 25

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除