当前位置: 首页 > news >正文

C++ 构造函数

1、简介

构造函数:构造函数是类的一种特殊成员函数,它会在每次创建类的新对象的时候执行。构造函数与类名完全相同,并且不会返回任何类型,也不会返回void。构造函数可用于为某些函数设置初始值。

2、默认构造函数(无参构造函数)

2.1、隐式默认构造函数

(1) 什么时候会生成隐式默认构造函数?

  1. 如果用户没有显式定义任何构造函数,编译器会自动生成一个隐式默认构造函数;
    class S {public:int a;char ch;int* p;
    };
    int test() {S s; // 调用编译器生成的默认构造函数,此时成员变量未初始化,是随机值。return 0;
    }
    
  2. 如果用户定义了任何构造函数,编译器不会自动生成默认构造函数,除非用户使用= defalut强制编译器生成默认构造函数。
  3. 如果类的成员变量没有默认构造函数,编译器无法生成默认构造函数。
  4. 如果类的基类没有默认构造函数,编译器无法生成默认构造函数。
  5. 如果类的成员变量是引用类型,编译器无法生成默认构造函数。
  6. 如果类型成员是const类型,且未提供类内初始化,编译器无法生成默认构造函数。
  7. 如果默认构造函数被= delete显式删除,编译器无法生成默认构造函数。
  • 代码示例:
    class Base {
    public:Base(int val) : a(val) {} int a;
    }
    class S : public Base { 		// 情况4public:S() = default;                // 反例:情况2S() = delete; 				// 情况7S(int a) : Base(a), a(a) {} 	// 情况2public:Base base; 					// 情况3 int & i;   					// 情况5const int ci1; 				// 情况6const int ci2 = 1; 			// 反例:情况6  int a;char ch
http://www.lqws.cn/news/460225.html

相关文章:

  • 谷歌浏览器电脑版官方下载- Google Chrome官方网页版入口
  • 猿人学js逆向比赛第一届第九题
  • window显示驱动开发—输出合并器阶段
  • 什么是Vue.js
  • Java 编程之代理模式
  • 大模型与搜索引擎的技术博弈及未来智能范式演进
  • 深入解析:如何实时获取Socket接收缓冲区的数据量
  • Python按钮点击事件快速入门
  • 全球化 2.0 | 云轴科技 ZStack与澳门天网资讯 共推AI Infra
  • gitea本地部署代码托管后仓库的新建与使用(配置好ssh密钥后仍然无法正常克隆仓库是什么原因)
  • Linux 系统中,查询 JDK 的安装目录
  • 智慧医院内部是如何互联的
  • 魅族“换血”出牌:手机基本盘站不稳,想靠AI和汽车“改命”
  • Vue 滑动验证组件
  • 下载链接记录
  • android gradle的优化
  • FPGA基础 -- Verilog 共享任务(task)和函数(function)
  • vue2通过leaflet实现图片点位回显功能
  • 电子制造智能化转型:MES如何解决工艺复杂、质量追溯与供应链协同
  • C++11 右值引用(Rvalue Reference)
  • HarmonyOS 6 + 盘古大模型5.5
  • Spring Boot自动装配原理解析
  • WebServer实现:muduo库的主丛Reactor架构
  • FPGA基础 -- Verilog 的属性(Attributes)
  • Spring Boot + MyBatis + Vue:从零到一构建全栈应用
  • FastJSON 或 Jackson 等库序列化 LocalDateTime 时,默认会将其转换为时间戳(毫秒数)
  • postgresql 函数调试
  • FastAPI lifespan示例
  • 《道德经》:探寻古老智慧中的哲学之光
  • 将无序json数据转换为excel表格形式