社交网站解决方案wordpress设计类网站

张小明 2025/12/27 21:29:59
社交网站解决方案,wordpress设计类网站,如何做网站产品经理,专业网站设计建设在 C 面向对象编程中#xff0c;类的默认成员函数是非常重要的概念。当我们没有显式实现某些成员函数时#xff0c;编译器会自动生成它们#xff0c;这些函数被称为默认成员函数。本文将详细介绍 C 类的 6 个默认成员函数#xff0c;包括构造函数、析构函数、拷贝构造函数、…在 C 面向对象编程中类的默认成员函数是非常重要的概念。当我们没有显式实现某些成员函数时编译器会自动生成它们这些函数被称为默认成员函数。本文将详细介绍 C 类的 6 个默认成员函数包括构造函数、析构函数、拷贝构造函数、赋值运算符重载以及取地址运算符重载。一、默认成员函数概述默认成员函数是指用户没有显式实现编译器会自动生成的成员函数。一个类在我们不写任何成员函数的情况下编译器会默认生成以下 6 个默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载普通取地址运算符重载const 取地址运算符重载其中前 4 个是我们需要重点掌握的后两个在大多数情况下使用编译器自动生成的即可。另外C11 以后还增加了两个默认成员函数移动构造和移动赋值本文暂不讨论。二、构造函数构造函数是一种特殊的成员函数其作用是在对象实例化时初始化对象替代了我们以前手动调用的Init函数并且会自动调用。构造函数的特点函数名与类名相同无返回值不需要写void对象实例化时系统会自动调用对应的构造函数可以重载若未显式定义编译器会生成无参的默认构造函数一旦用户显式定义编译器不再生成无参构造函数、全缺省构造函数、编译器默认生成的构造函数都称为默认构造函数不传实参即可调用且这三者不能同时存在编译器默认生成的构造函数对内置类型成员变量的初始化不确定对自定义类型成员变量会调用其默认构造函数构造函数示例#include iostream using namespace std; class Date { public: // 无参构造函数 Date() { _year 1; _month 1; _day 1; } // 带参构造函数 Date(int year, int month, int day) { _year year; _month month; _day day; } // 全缺省构造函数不能与无参构造同时存在 // Date(int year 1, int month 1, int day 1) // { // _year year; // _month month; // _day day; // } void Print() { cout _year / _month / _day endl; } private: int _year; int _month; int _day; }; int main() { Date d1; // 调用无参构造函数 Date d2(2025, 1, 1); // 调用带参构造函数 // 注意以下写法是函数声明不是对象实例化 // Date d3(); return 0; }大多数情况下我们需要自己实现构造函数。只有少数情况如类的成员都是自定义类型且这些自定义类型有合适的默认构造函数时如用两个 Stack 实现队列编译器自动生成的构造函数才够用。三、析构函数析构函数的功能并不是销毁对象本身对象在生命周期结束时会自动销毁而是完成对象中资源的清理释放工作类比我们之前实现的Destroy函数。析构函数的特点析构函数名是在类名前加上~无参数无返回值不需要写void一个类只能有一个析构函数若未显式定义系统会自动生成对象生命周期结束时系统会自动调用析构函数编译器自动生成的析构函数对内置类型成员不做处理对自定义类型成员会调用其析构函数即使显式定义了析构函数自定义类型成员的析构函数也会被自动调用没有申请资源的类如 Date可以不写析构函数有资源申请的类如 Stack必须自己写析构函数否则会造成资源泄漏局部域的多个对象后定义的先析构析构函数示例#includeiostream using namespace std; typedef int STDataType; class Stack { public: Stack(int n 4) { _a (STDataType*)malloc(sizeof(STDataType) * n); if (nullptr _a) { perror(malloc申请空间失败); return; } _capacity n; _top 0; } // 析构函数释放资源 ~Stack() { cout ~Stack() endl; free(_a); _a nullptr; _top _capacity 0; } private: STDataType* _a; size_t _capacity; size_t _top; }; // 两个Stack实现队列 class MyQueue { public: // 编译器默认生成的析构函数会调用Stack的析构函数 ~MyQueue() { cout ~MyQueue() endl; } private: Stack pushst; Stack popst; }; int main() { Stack st; MyQueue mq; // 析构顺序~MyQueue() - ~Stack()(popst) - ~Stack()(pushst) - ~Stack()(st) return 0; }四、拷贝构造函数拷贝构造函数是一种特殊的构造函数用于用一个已存在的对象初始化一个新创建的对象。拷贝构造函数的特点是构造函数的一个重载第一个参数必须是自身类类型对象的引用使用传值方式会引发无穷递归调用可以有多个参数但后续参数必须有缺省值C 规定自定义类型对象进行拷贝行为必须调用拷贝构造如传值传参、传值返回若未显式定义编译器会生成默认拷贝构造函数对内置类型成员进行值拷贝 / 浅拷贝对自定义类型成员调用其拷贝构造成员全是内置类型且无资源的类如 Date不需要显式实现有资源的类如 Stack需要显式实现深拷贝否则会导致双重释放传值返回会产生临时对象并调用拷贝构造传引用返回可减少拷贝但需确保返回对象在函数结束后仍存在拷贝构造函数示例#include iostream using namespace std; class Date { public: Date(int year 1, int month 1, int day 1) { _year year; _month month; _day day; } // 拷贝构造函数 Date(const Date d) // 使用const引用避免修改原对象 { _year d._year; _month d._month; _day d._day; } void Print() { cout _year / _month / _day endl; } private: int _year; int _month; int _day; }; int main() { Date d1(2025,11,30); d1.Print(); // 2025/11/30 // 拷贝构造 Date d2(d1); d2.Print(); // 2025/11/30 Date d3 d2; // 也是拷贝构造 d3.Print(); // 2025/11/30 return 0; }深拷贝实现以 Stack 为例// 栈的深拷贝构造 Stack(const Stack st) { // 对指针指向的资源重新申请空间并复制数据 _a (STDataType*)malloc(sizeof(STDataType) * st._capacity); if (nullptr _a) { perror(malloc申请空间失败!!!); return; } memcpy(_a, st._a, sizeof(STDataType) * st._top); _top st._top; _capacity st._capacity; }深 / 浅拷贝区别浅拷贝按字节拷贝对于指针成员只拷贝地址不拷贝资源可能导致多个对象共享同一份资源深拷贝不仅拷贝指针本身还对指针指向的资源重新申请空间并复制数据每个对象拥有独立的资源五、赋值运算符重载赋值运算符重载用于完成两个已存在对象之间的拷贝赋值与拷贝构造的区别是拷贝构造用于用已有对象初始化新对象而赋值重载用于两个已存在对象之间的赋值。运算符重载基础运算符重载是具有特殊名字的函数形式为operator运算符重载运算符的参数个数与运算对象数量一致一元运算符 1 个参数二元运算符 2 个参数若为成员函数第一个参数为隐式的this指针因此参数比运算对象少一个不能重载的运算符.*、::、sizeof、?:、.重载操作符至少有一个类类型参数前置 和后置 的区分后置 重载时增加一个int形参和建议重载为全局函数以符合使用习惯赋值运算符重载的特点必须重载为成员函数参数建议为const当前类类型引用避免传值拷贝返回值建议为当前类类型引用支持连续赋值未显式实现时编译器会生成默认赋值重载行为与默认拷贝构造类似内置类型浅拷贝自定义类型调用其赋值重载有资源的类需要显式实现深拷贝的赋值重载赋值运算符重载示例// 赋值运算符重载 Date operator(const Date d) { // 避免自己给自己赋值 if (this ! d) { _year d._year; _month d._month; _day d._day; } return *this; // 支持连续赋值 } // 使用示例 int main() { Date d1(2025, 11, 30); Date d2(2025, 12, 1); d1 d2; // 赋值重载两个已存在对象 Date d3(d2); // 拷贝构造用d2初始化新对象d3 Date d4 d2; // 拷贝构造不是赋值 return 0; }六、取地址运算符重载取地址运算符重载分为普通取地址和 const 取地址两种一般情况下编译器自动生成的即可满足需求不需要显式实现。const成员函数const 成员函数是指用 const 修饰的成员函数const 放在参数列表后面实际修饰的是隐含的this指针表明在该函数中不能修改类的任何成员。// const成员函数示例 void Print() const // 实际为void Print(const Date* const this) { cout _year - _month - _day endl; }取地址运算符重载示例class Date { public : // 普通取地址运算符重载 Date* operator() { return this; // return nullptr; // 可以自定义返回值 } // const取地址运算符重载 const Date* operator()const { return this; // return nullptr; // 可以自定义返回值 } private : int _year; // 年 int _month; // 月 int _day; // 日 };
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站策划与建设阶段的推广方法怎么随便搞个网站

数据加密备份系统技术解析 在当今数字化时代,数据安全和备份至关重要。本文将详细介绍一个数据加密备份系统的核心技术,包括数据加密、解密、签名验证以及高效的块上传等功能。 数据加密 数据加密是保障数据安全的重要环节。该系统采用了三步骤的数据加密流程: 1. 生成…

张小明 2025/12/26 5:47:43 网站建设

舆情监测软件济南seo优化公司助力网站腾飞

概述 (Overview) 在进行本地文件包含 (LFI) 漏洞利用时,了解目标服务器上可能存在的敏感文件的默认路径至关重要。读取这些文件可以帮助攻击者获取系统信息、用户凭证、配置文件、源代码等关键数据。以下是一些在 Windows 和 Linux 系统上常见的敏感文件及其默认路…

张小明 2025/12/26 5:47:44 网站建设

要怎样建立自己的网站网页制作参考文献

一条珠江,流淌着千年商贸往事与人文记忆。拍摄它的纪录片,却是一场对光影的终极挑战——变幻的天色、氤氲的水汽、宏大的江景与细腻的岸边细节,都在考验着每一台摄像机的极限。当《珠江》纪录片团队决定采用博冠B1 8K摄像机完成全片拍摄时&am…

张小明 2025/12/26 5:47:45 网站建设

门户网站建设公司哪家好搜狗优化排名

概述 调试pico应用需要用到官方插件pico live preview 启动pdc 下载插件 ​​​​​j​​​​​开发资源 | PICO 开发者平台 安装插件 解压插件,磁盘方式添加插件的json文件 启用插件 调试应用 然后就可以像调试pc应用那样调试pico程序了 仅适用于非MR项目 类似…

张小明 2025/12/26 5:47:46 网站建设

蝴蝶传媒网站推广网站开发兼职网站

使用LoRA进行微调不仅仅是选择一个秩值然后开始训练那么简单。有几个关键超参数可以决定模型是勉强学习还是表现超过完全微调。让我们深入探讨每一个参数,尤其是如何为您的用例选择最佳秩值。LoRA 和 QLoRA 都是用于微调大型语言模型(LLM)的参…

张小明 2025/12/26 5:47:46 网站建设

四川 网站建设wordpress怎么上传主题

Text-Generation-inference部署实战技巧:从零到生产级应用 【免费下载链接】text-generation-inference text-generation-inference - 一个用于部署和提供大型语言模型(LLMs)服务的工具包,支持多种流行的开源 LLMs,适合…

张小明 2025/12/26 5:47:47 网站建设