新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++中的6种构造函数举例详解

发布时间:2026/10/2 2:35:52来源:尧图网络
C++中的6种构造函数举例详解
在 C 中构造函数是一种特殊的成员函数用于初始化类对象。在对象创建时自动调用构造函数的主要作用是分配资源、初始化数据成员等。根据不同的功能和使用场景C 提供了多种类型的构造函数1. 默认构造函数 (Default Constructor)默认构造函数不接受任何参数或者所有参数都有默认值。当你创建对象时如果不指定参数就会调用默认构造函数。特点如果类没有定义任何构造函数编译器会自动生成一个默认构造函数。如果类有其他构造函数但没有显式定义默认构造函数编译器不会生成默认构造函数。示例12345678910classMyClass {public:MyClass() {// 默认构造函数x 0;}private:intx;};MyClass obj;// 自动调用默认构造函数2. 参数化构造函数 (Parameterized Constructor)参数化构造函数允许在创建对象时传递参数用于初始化对象的成员变量。特点通过传递参数可以灵活地为对象赋值。示例12345678910classMyClass {public:MyClass(intval) {// 参数化构造函数x val;}private:intx;};MyClass obj(10);// 使用参数化构造函数3. 拷贝构造函数 (Copy Constructor)拷贝构造函数用于创建对象时用一个已存在的对象来初始化新对象。其形式为接受一个对象的常量引用。特点如果没有显式定义编译器会自动生成一个默认的拷贝构造函数。主要用于复制对象的值特别是对于动态分配内存的类手动定义拷贝构造函数可以防止浅拷贝问题。示例123456789101112classMyClass {public:MyClass(intval) : x(val) {}// 参数化构造函数MyClass(constMyClass obj) {// 拷贝构造函数x obj.x;}private:intx;};MyClass obj1(10);MyClass obj2 obj1;// 使用拷贝构造函数4. 移动构造函数 (Move Constructor)移动构造函数是在 C11 引入的用于通过移动语义来避免拷贝操作从而提高程序的性能特别是涉及动态分配资源的对象。特点接受一个右值引用 (T)。用于将资源从一个临时对象“移动”到新的对象中通常通过偷取资源而不是复制它们。示例1234567891011121314classMyClass {public:MyClass(intval) : x(newint(val)) {}// 动态分配内存MyClass(MyClass obj) noexcept {// 移动构造函数x obj.x;obj.x nullptr;// 释放临时对象的所有权}~MyClass() {deletex; }private:int* x;};MyClass obj1(10);MyClass obj2 std::move(obj1);// 使用移动构造函数5. 委托构造函数 (Delegating Constructor)委托构造函数是在一个构造函数中调用同一个类的另一个构造函数从而避免代码重复。这是 C11 引入的特性。特点可以简化多个构造函数之间的代码逻辑避免重复代码。示例1234567891011classMyClass {public:MyClass() : MyClass(0) {// 委托给参数化构造函数// 可以额外执行一些操作}MyClass(intval) : x(val) {}// 参数化构造函数private:intx;};MyClass obj;// 调用默认构造函数委托给参数化构造函数6. 显式构造函数 (Explicit Constructor)explicit构造函数用于防止隐式类型转换。这对防止错误的自动类型转换特别有用。特点防止构造函数被自动调用进行隐式转换。示例123456789classMyClass {public:explicitMyClass(intval) : x(val) {}// 显式构造函数private:intx;};MyClass obj1(10);// OKMyClass obj2 10;// 错误显式构造函数禁止隐式转换7. 析构函数 (Destructor)虽然析构函数不算构造函数但与其作用类似。析构函数用于在对象生命周期结束时释放资源。析构函数没有参数且前面有~符号。示例1234567classMyClass {public:MyClass() { x newint(10); }~MyClass() {deletex; }// 析构函数private:int* x;};总结C 中构造函数的类型和用途可以总结如下默认构造函数: 初始化对象通常不需要参数。参数化构造函数: 通过传参初始化对象的成员。拷贝构造函数: 通过已有对象初始化新对象。移动构造函数: 移动对象的资源避免不必要的拷贝。委托构造函数: 在一个构造函数中调用另一个构造函数。显式构造函数: 防止隐式类型转换。这些构造函数为对象的初始化提供了灵活的选择尤其在管理资源时合理使用拷贝和移动构造函数可以显著提升程序的效率。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

DeepSeek Harness增强插件实战:从能用迈向好用的完整配置指南 2026/10/2 5:21:11

DeepSeek Harness增强插件实战:从能用迈向好用的完整配置指南

第一次把 DeepSeek Harness 完整跑起来的时候,我其实谈不上惊艳。模型能对话,能调用工具,能挂上 Skill,但说句实话,对一个天天写代码的人来说,它更像一栋刚交付的毛坯房:墙、水电、地面都通了&a…

阅读更多 →
GlobalMapper 20大TIF转MBTiles:参数与性能优化实战 2026/10/2 5:21:04

GlobalMapper 20大TIF转MBTiles:参数与性能优化实战

1. 先弄清楚:为什么大TIF在GlobalMapper里拖动像放幻灯片做遥感影像、无人机正射、DEM晕渲或者工程勘察的朋友,多半都经历过这个场景:手头一张几GB甚至几十GB的GeoTIFF,双击丢进GlobalMapper 20,等它读完、建完显示金字…

阅读更多 →
SysML/UML协同建模实战:从物理系统架构到可执行行为验证 2026/10/2 5:21:04

SysML/UML协同建模实战:从物理系统架构到可执行行为验证

简介:本资源是面向系统工程师、软件架构师及高校相关专业师生的权威建模方法论指南,聚焦OMG主导的SysML/UML标准在系统工程全生命周期中的实践应用。内容覆盖SysML与UML的演进关系、需求建模与追踪、系统架构分析、动态行为仿真验证等核心能力&#xff0…

阅读更多 →
Hermes-Agent从零部署:依赖配置与性能调优实战指南 2026/10/2 5:20:58

Hermes-Agent从零部署:依赖配置与性能调优实战指南

把Hermes-Agent从仓库拉下来那一刻,我以为最难的环节已经过去了——毕竟项目README写得相当友好,看起来就是pip install hermes-agent一把梭的事。真正动手部署才发现,环境配置才是大多数人被劝退的起点。依赖配置远不止装一个包那么简单&…

阅读更多 →
从单卡到千卡:大模型推理集群的负载均衡与性能调优实战 2026/10/2 5:20:57

从单卡到千卡:大模型推理集群的负载均衡与性能调优实战

去年底部门内部做了一次推理服务压力测试,结果把所有人都整沉默了。一张性能参数相当不错的推理加速卡,跑27B量级的Qwen3开源模型,单并发时tokens/s数据漂亮得很,演示Demo完全够用,可一旦模拟真实线上流量打到20个并发…

阅读更多 →
OpenRig 实战指南:本地大模型 CLI 开发环境搭建与排错 2026/10/2 5:20:57

OpenRig 实战指南:本地大模型 CLI 开发环境搭建与排错

1. OpenRig 是什么:一个被误读的开源工具链命名陷阱OpenRig 这个词在当前技术社区里,正经历一场典型的“语义漂移”——它既不是某个广为人知的成熟项目,也不是官方发布的标准工具,而更像一个在开发者私有工作流中自发形成的、带有…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉