C++中合成的默认构造函数的访问权限

问题

我们知道,在C++中,如果没有为一个类显式定义构造函数,那么编译器会为我们隐式地定义一个默认构造函数。那么,你有没有想过,这个隐式定义地默认构造函数(合成的默认构造函数)的访问权限是什么呢?它跟类中其他成员的权限有没有什么关系呢?

比如,下面这个类,它的所有成员都是 private 的,那么它的合成的默认构造函数会是 private 的吗?

class MyClass {
// 编译器为MyClass合成的默认构造函数的访问控制权限是什么呢?
private:int val1;double val2;void info();
}

分析

事实上,通过编码很容易找到答案:

class MyClass {
// 编译器为MyClass合成的默认构造函数的访问控制权限是什么呢?
private:int val1;double val2;void info();
}void func() {MyClass obj;	// 正常编译,不会报错,说明默认构造函数是public的
}

从上面的代码可以看出,实际上编译器合成的默认构造函数永远都是 public 权限的,无论其中的成员是什么访问权限

关于这一点,cppreference 中也有清晰的说明:

If no user-declared constructors of any kind are provided for a class type, the compiler will always declare a default constructor as an inline public member of its class.
如果用户没有为一个类提供任意种类的构造器,编译器总是会为该类声明一个作为内联公共成员的默认构造器。


拓展

事实上,不仅仅是合成的默认构造函数,包括编译器合成的拷贝控制成员(合成的拷贝构造函数、合成的移动构造函数、合成的赋值运算符和合成的析构函数),也都是永远是 public 的。

参考

  • Are synthesized copy control members always public?
  • Default constructors

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/836145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯备战10.分巧克力

P8647 [蓝桥杯 2017 省 AB] 分巧克力 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 暴力枚举 过70%样例 #include<bits/stdc.h> #define endl \n #define int long long using namespace std; const int N 2e710,M 1e310; int n,k; int h[N],w[N]; bool check(int …

js的传参方法

在JavaScript中&#xff0c;有几种不同的方式可以向函数传递参数&#xff08;传参&#xff09;。以下是一些主要的方法&#xff1a; 位置参数&#xff08;Positional Parameters&#xff09; 这是最常见的传参方式。在定义函数时&#xff0c;你指定参数的名称&#xff0c;然后…

百度云防护如何开启CC攻击防护

百度云防护的最重要的功能是可以CC攻击防护&#xff0c;针对CC攻击&#xff0c;百度云防护有被动的CC攻击拦截规则&#xff0c;也有主动自定义访问策略拦截。 今天百度云来教大家如何开启百度云防护的CC攻击防御功能。 1.进入防护模板功能-创建模板 2.开启CC攻击防御功能&…

李飞飞首次创业!

B站&#xff1a;啥都会一点的研究生公众号&#xff1a;啥都会一点的研究生 最近AI又有啥进展&#xff1f;一起看看吧~ 中国独角兽企业已达369家&#xff0c;六成以上与AI、芯片等硬科技赛道有关 2024中关村论坛“全球独角兽企业大会”上发布全新《中国独角兽企业发展报告&am…

探索互联网医院系统源码:开发在线药房小程序实战教学

今天&#xff0c;笔者将与大家一同深入探讨互联网医院系统的源码结构&#xff0c;并通过开发在线药房小程序的实战教学&#xff0c;为读者提供一种学习和理解这一领域的途径。 一、互联网医院系统源码解析 1.技术选型 互联网医院系统的开发离不开合适的技术选型&#xff0c;…

JavaScript(进阶)

作用域 了解作用域对程序执行的影响及作用域链的查找机制&#xff0c;使用闭包函数创建隔离作用域避免全局变量污染。 作用域&#xff08;scope&#xff09;规定了变量能够被访问的“范围”&#xff0c;离开了这个“范围”变量便不能被访问&#xff0c;作用域分为全局作用域和局…

类和对象-Python-第二部分

师从黑马程序员 多态 抽象类&#xff08;接口&#xff09; #演示抽象类 class AC:def cool_wind(self):"""制冷"""passdef hot_wind(self):"""制热"""def swing_l_r(self):"""左右摆风""…

Cloudflare国内IP地址使用教程

Cloudflare国内IP地址使用教程 加速网站&#xff1a; 首先我们添加一个 A 记录解析&#xff0c;解析 IP 就是我们服务器真实 IP&#xff1a; 然后侧边栏 SSL/TLS - 自定义主机名&#xff1a; 回退源这里填写你刚刚解析的域名&#xff0c;保存后回退源状态为有效再来接下的操作…

第十二篇:数据库系统导论 - 探索数据管理的基石

数据库系统导论 - 探索数据管理的基石 1 引言 数据的力量&#xff1a;揭秘数据库系统的核心 在信息时代&#xff0c;数据无处不在&#xff0c;它们成为了企业和社会运作的基础。我们如何储存、检索、更新和维护这些数据&#xff0c;决定了我们能否从这些数据中获得力量。数据…

JAVA基础-----泛型

三、泛型接口 1、基本语法&#xff1a; public interface 接口名<类型参数> {... }2、泛型接口中的类型参数&#xff0c;在该接口被继承或者被实现时确定。解释如下&#xff1a; &#xff08;1&#xff09;在泛型接口中&#xff0c;静态成员也不能使用泛型接口定义的类…

linux内核debug(一)oops

目录 一、引言 二、二、oops ------>2.1、kallsyms ------>2.2、编写产生oops的驱动 ------>2.3、打印函数调用过程 ------>2.4、根据RBP寄存器找到出错函数 ------>2.5、反汇编驱动 ------>2.6、addr2line ------>2.7、内核代码出错 ------>…

Spring Boot进阶 - 实现自动装配原理

Spring Boot的自动装配&#xff08;Auto-Configuration&#xff09;是其核心特性之一&#xff0c;它极大地简化了Spring应用的配置过程。自动装配的原理基于Spring框架的Configuration、ConditionalOnClass、ConditionalOnMissingBean等注解&#xff0c;以及Spring Boot提供的s…

网络应用层

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.使用协议和序列化1.1.自定义协议&#xff0c;自定义序列化1.2.自…

【网络】网络基础

目录 一、前言 1.计算机网络背景 2.认识协议 二、网络协议初识 1.OSI七层模型 2.TCP/IP五层(或四层)模型 3.网络传输基本流程 4.数据包封装和分用 5.网络中的地址管理 1.IP地址 2.MAC地址 一、前言 1.计算机网络背景 网络之前&#xff0c;我们所有在电脑上的操作都是…

Spring Boot数据映射利器:MapperStruct vs. BeanUtils.copyProperties 一较高下

Spring Boot数据映射利器&#xff1a;MapperStruct vs. BeanUtils.copyProperties 一较高下 在 Spring Boot 应用程序中&#xff0c;常常需要在不同的 Java 对象之间进行数据拷贝。这种拷贝操作在开发中非常常见&#xff0c;比如将 DTO&#xff08;Data Transfer Object&#x…

5. 简单说一说uniapp中的语法吧

前言 如果你 知道Vue3并且对Vue3的语法有一定了解&#xff0c;请跳过这一章&#xff0c;由于后续项目主要是基于Vue3TypeScript&#xff0c;因此提前简单概述一些Vue3的基础语法~ 本文的目的是 期望通过对本文的阅读后能对Vue3的每个语法有一个简单的印象&#xff0c;至少要知…

nacos配置中心

配置不成功的时候需要放开服务器的8848端口号不然报错 父工程 <!-- springCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.ver…

Flink面试整理-Flink的监控和日志收集

在 Apache Flink 中,监控和日志收集对于维护系统的健康、性能优化和故障诊断非常重要。以下是 Flink 监控和日志收集的几个关键方面: 监控 Metrics System:Flink 提供了一个全面的指标(Metrics)系统,可以收集和报告各种性能指标,如吞吐量、延迟、资源利用率等。支持的指…

二叉搜索数使用,底层原理及代码实现

1:二叉搜索树的定义 二叉搜索树的底层是一个二叉链表 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树 &#xff0c;或者是具有以下性质的二叉树 : 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值 若它的右子树不为空&#xff0c;则右子树上所…

Redis-配置文件详解

Redis配置文件详解 units单位 配置大小单位&#xff0c;开头定义基本度量单位&#xff0c;只支持bytes&#xff0c;大小写不敏感。 INCLUDES Redis只有一个配置文件&#xff0c;如果多个人进行开发维护&#xff0c;那么就需要多个这样的配置文件&#xff0c;这时候多个配置 文…