很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

2026-04-11 22:561阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1683个文字,预计阅读时间需要7分钟。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

各路好友,欢迎来到本期博客+!本章节将为大家介绍,+各类六大默认成员函数+!为什么+类+会引入默认成员函数+?a. 函数的调用会开辟空间,用来存储数据+!而开辟的空间被称为栈。

各位好友,欢迎来到本期博客 !本章节 将为大家介绍, 类的六大默认成员函数 !

为什么 类 会引入 默认成员函数 ?

a. 函数的调用会开辟空间,用来存储数据 !而开辟的空间叫做栈区!当函数的生命周期结束的时候,栈区需要进行销毁,将空间归还给 操作系统。如此,可以防止 内存泄露 !

b. 其实,往往内存泄露的情况时有发生,主要还是程序员自身忘记书写了 ;另一方面,默认成员函数的引入,会极大简化代码量 ,凸显主要的逻辑运行 !

对于 内存泄露问题,在 编译器的控制台显示下,会检测不出来 !只有对底层原理,反汇编有一定的深入了解,才能看得懂 !

由于篇幅限制,太长了,会产生疲劳感 !因此,类的六大默认成员函数,会分模块进行梳理 !

------>大类 ~ 六大默认成员函数

---->构造函数

---> 构造函数是特殊的成员函数,需要注意,构造函数 虽然有 “构造” 两个字,但是函数的前期任务已经完成,并不再是 开空间 建对象,而是初始化对象 !

---> 特性:

1.函数名与类名相同;

2. 无返回值 (也不需要 void)

3. 可以构成重载;

4. 对象实例化, 编译器自动调用对应的构造函数;

5. 如果类中没有显示 定义构造函数,则 C++ 编译器会自动生成一个 无参的默认构造函数,一旦用户 显示定义 编译器将不再生成 。


本模块下, 构造函数五大特性是非常重要的 !同时,五大特性是理解与掌握 构造函数的不二法宝 !

测试构造函数 :>

--->函数名与类名 -->相同

--->无 返回值

#include <iostream> using std::cout; using std:: endl; class Date { public: Date(int year = 2018, int month = 6, int day = 7) { _year = year; _month = month; _day = day; } void Print() { cout << _year << " - " << _month << " - " << _day << endl; } private: int _yaer; int _month; int _day; }; int main() { // 无参数调用,编译器默认初始化 Date d1; d1.Print(); // 传入参数, 编译器调用构造函数 Date d2(2023, 5, 1); d2.Print(); return 0; }


为了方便好友们,更好地观感体验, 与更好地理解 !现附上有彩色的代码图样 :>

----> 无参数传入, 编译器默认参数

----> 有参数传入,编译器调用构造函数

对于构造函数中 有无参数 传入,均是满足 :>

1. 构造函数名称与类名相同;

2. 构造函数,不需要考虑返回值,也不需要考虑 void ;

各位好友,构造函数 前两点,已完成验证 !

下面,转战 特性 4 进行讲解 !为了方便好友们,理解掌握:> 这 需要运用 前期学习过的知识点 !用 栈区实现 !

-----> 特性四 :对象实例化, 编译器自动调用构造函数

--->运用构造函数,实现栈区(此处并没有进行测试)

#include <iostream> using std:: cout; using std:: endl; typedef int STDataType; class Stack { public: Stack(int capacity = 4) { cout << " 这是运用构造函数实现栈区 " << endl; STDataType* a = (STDataType*)malloc(sizeof(STDaTaType) * capacity); if(a == nullptr) { perror("malloc::fail"); return ; } capacity = 4; top = 0; } Init() { STDataType* a = (STDataType*)malloc(sizeof(STDaTaType) * 4); if(a == nullptr) { perror("malloc::fail"); return ; } capacity = 4; top = 0; } void Push(STDataType x) { CheckCapacity(); a[top++] = x; } void Pop() { top--; } void TTop() { return a[top - 1]; } bool Empty() { return top == 0; } int Size() //栈区内个数 { return top; } private: void CheckCapacity() { if(top == capacity) { int newCapacity = 2 * capacity; STDataType* tamp = (STDataType*)realloc(a, sizeof(STDataType) * newCapacity); if(tamp == nullptr) { perror("realloc::fail"); return ; } a = tamp; capacity = newCapacity; } } private: STDataType* a; int capacity; int top; };

为了方便好友们,有更好的观感体验, 与更好地理解 !继续推进,全部是 有彩色的代码图样 :>

----> 无 构造函数,实现栈区

运行结果 :>

下面来看,运用构造函数,实现栈区的应用场景 !

----> 运用构造函数,实现栈区

--> 运行结果 :>

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

以上,是本次 实现构造函数 应用场景 !然而,构造函数 运用还不至于此 !

以下,探究 特性 3:> 实现构造函数重载

--> 实现环节 :>

--> 测试环节 : >

--> 运行结果 :>

接下来,探究 特性 5 :>如果 类中没有定义构造函数,则编译器自动调用默认构造函数;一旦 编写者自身书写,则不会再 自动调用默认构造函数 。

----->自动调用构造,生成随机值


--->注意 :>有自定义类型的情况下,VS2019 编译器,会将其初始化 为 0 (不同年份,不同版本会有所不同)

--->添加自定义类型,如下 :>

---->运行结果 : >


各位好友,构造函数 部分讲解 已完成 !其中,最重要的点,是本期 构造函数 五大特性 !

其实,构造函数 还有另外两个特性 !然而,本期博客篇幅太长,容易产生疲劳感 !

为了方便好友们 观感体验,构造函数 -->另外两点,需要在下一期与大家相见!

标签:Camp对象

本文共计1683个文字,预计阅读时间需要7分钟。

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

各路好友,欢迎来到本期博客+!本章节将为大家介绍,+各类六大默认成员函数+!为什么+类+会引入默认成员函数+?a. 函数的调用会开辟空间,用来存储数据+!而开辟的空间被称为栈。

各位好友,欢迎来到本期博客 !本章节 将为大家介绍, 类的六大默认成员函数 !

为什么 类 会引入 默认成员函数 ?

a. 函数的调用会开辟空间,用来存储数据 !而开辟的空间叫做栈区!当函数的生命周期结束的时候,栈区需要进行销毁,将空间归还给 操作系统。如此,可以防止 内存泄露 !

b. 其实,往往内存泄露的情况时有发生,主要还是程序员自身忘记书写了 ;另一方面,默认成员函数的引入,会极大简化代码量 ,凸显主要的逻辑运行 !

对于 内存泄露问题,在 编译器的控制台显示下,会检测不出来 !只有对底层原理,反汇编有一定的深入了解,才能看得懂 !

由于篇幅限制,太长了,会产生疲劳感 !因此,类的六大默认成员函数,会分模块进行梳理 !

------>大类 ~ 六大默认成员函数

---->构造函数

---> 构造函数是特殊的成员函数,需要注意,构造函数 虽然有 “构造” 两个字,但是函数的前期任务已经完成,并不再是 开空间 建对象,而是初始化对象 !

---> 特性:

1.函数名与类名相同;

2. 无返回值 (也不需要 void)

3. 可以构成重载;

4. 对象实例化, 编译器自动调用对应的构造函数;

5. 如果类中没有显示 定义构造函数,则 C++ 编译器会自动生成一个 无参的默认构造函数,一旦用户 显示定义 编译器将不再生成 。


本模块下, 构造函数五大特性是非常重要的 !同时,五大特性是理解与掌握 构造函数的不二法宝 !

测试构造函数 :>

--->函数名与类名 -->相同

--->无 返回值

#include <iostream> using std::cout; using std:: endl; class Date { public: Date(int year = 2018, int month = 6, int day = 7) { _year = year; _month = month; _day = day; } void Print() { cout << _year << " - " << _month << " - " << _day << endl; } private: int _yaer; int _month; int _day; }; int main() { // 无参数调用,编译器默认初始化 Date d1; d1.Print(); // 传入参数, 编译器调用构造函数 Date d2(2023, 5, 1); d2.Print(); return 0; }


为了方便好友们,更好地观感体验, 与更好地理解 !现附上有彩色的代码图样 :>

----> 无参数传入, 编译器默认参数

----> 有参数传入,编译器调用构造函数

对于构造函数中 有无参数 传入,均是满足 :>

1. 构造函数名称与类名相同;

2. 构造函数,不需要考虑返回值,也不需要考虑 void ;

各位好友,构造函数 前两点,已完成验证 !

下面,转战 特性 4 进行讲解 !为了方便好友们,理解掌握:> 这 需要运用 前期学习过的知识点 !用 栈区实现 !

-----> 特性四 :对象实例化, 编译器自动调用构造函数

--->运用构造函数,实现栈区(此处并没有进行测试)

#include <iostream> using std:: cout; using std:: endl; typedef int STDataType; class Stack { public: Stack(int capacity = 4) { cout << " 这是运用构造函数实现栈区 " << endl; STDataType* a = (STDataType*)malloc(sizeof(STDaTaType) * capacity); if(a == nullptr) { perror("malloc::fail"); return ; } capacity = 4; top = 0; } Init() { STDataType* a = (STDataType*)malloc(sizeof(STDaTaType) * 4); if(a == nullptr) { perror("malloc::fail"); return ; } capacity = 4; top = 0; } void Push(STDataType x) { CheckCapacity(); a[top++] = x; } void Pop() { top--; } void TTop() { return a[top - 1]; } bool Empty() { return top == 0; } int Size() //栈区内个数 { return top; } private: void CheckCapacity() { if(top == capacity) { int newCapacity = 2 * capacity; STDataType* tamp = (STDataType*)realloc(a, sizeof(STDataType) * newCapacity); if(tamp == nullptr) { perror("realloc::fail"); return ; } a = tamp; capacity = newCapacity; } } private: STDataType* a; int capacity; int top; };

为了方便好友们,有更好的观感体验, 与更好地理解 !继续推进,全部是 有彩色的代码图样 :>

----> 无 构造函数,实现栈区

运行结果 :>

下面来看,运用构造函数,实现栈区的应用场景 !

----> 运用构造函数,实现栈区

--> 运行结果 :>

很抱歉,您提供的信息不完整,无法确定您需要我帮助的内容。请提供更详细的信息或者具体的问题,我会尽力为您解答。

以上,是本次 实现构造函数 应用场景 !然而,构造函数 运用还不至于此 !

以下,探究 特性 3:> 实现构造函数重载

--> 实现环节 :>

--> 测试环节 : >

--> 运行结果 :>

接下来,探究 特性 5 :>如果 类中没有定义构造函数,则编译器自动调用默认构造函数;一旦 编写者自身书写,则不会再 自动调用默认构造函数 。

----->自动调用构造,生成随机值


--->注意 :>有自定义类型的情况下,VS2019 编译器,会将其初始化 为 0 (不同年份,不同版本会有所不同)

--->添加自定义类型,如下 :>

---->运行结果 : >


各位好友,构造函数 部分讲解 已完成 !其中,最重要的点,是本期 构造函数 五大特性 !

其实,构造函数 还有另外两个特性 !然而,本期博客篇幅太长,容易产生疲劳感 !

为了方便好友们 观感体验,构造函数 -->另外两点,需要在下一期与大家相见!

标签:Camp对象