类和对象周边知识

2024-03-07 19:52
文章标签 对象 知识 周边

本文主要是介绍类和对象周边知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

再谈构造函数

前几期我们把六个默认成员函数一一说明后,构造函数还有一些周边知识。

初始化列表

我们在没有了解初始化列表的时候一般都是使用构造函数初始化或者在声明哪里给予缺省值,那么为什么好药存在初始化列表呢?是因为①.有些值必须在定义的时候初始化并且②.初始化列表一个变量只能出现一次

初始化列表的格式:
以冒号开始,逗号进行分割,先写成员变量,在用括号把参数括起来。
在这里插入图片描述

初始化列表是每个成员变量定义初始化的位置。有些成员必须走初始化列表:const、引用和自定义类型(有默认构造去调用默认构造,没有默认构造,就需要走初始化列表进行初始化)

隐式类型转化

如下图,两种方式都可以,第一种方式是我们普通的对象创建,第二中这是出现了隐式类型转化,这是因为2可以构造成一个临时对象,然后在通过拷贝构造
在这里插入图片描述
不希望隐式类型转化发生怎么办?在成员函数前加:explicit。

隐式类型转换支持多参数的,可以通过大括号来进行多参数的隐式类型转化。
在这里插入图片描述
注:初始化列表一定要按声明的顺序初始化!!不可以改变位置,某则会导致初始化数据有误。

static成员

在这里插入图片描述

友元函数和友元类

友元函数

注:友元函数慎用,因为相当于走后门。

当我们如果想要重载流提取和流插入操作符的时候,需要定义在类外面,是因为定义在类中就会导致参数顺序与底层实现不一致。那么为了解决这个问题,我们定义到了类外面,但是就导致私有的成员变量我们无法访问,那么这个时候我们就需要将友元函数的声明写到类中即可。

格式:friend+ 函数声明
友元函数的理解:想访问谁的私有成员变量,你就需要在它的里面写友元函数的声明。

那么我们都说慎用友元函数了,怎么解决呢?利用公有的get/set方法,可以替代友元函数。注意:友元函数没有this指针

友元类

在这里插入图片描述

内部类(c++很少有,做了解即可)

在一个类里定义另一个类。(相当于套娃)
那么如果我们用szieof()操作符算一个内部类,他的大小呢?**下图的答案是8。**因为A里面成员变量没有B的成员变量。从内存角度来说,类只是声明。
在这里插入图片描述

内部类的特点:
①. B类会收A类的类域限制。
②.内部类天生就是外部类的友元类。即:内部类可以访问外部类的私有;但是外部类不能访问内部类。

匿名对象

区别:
在这里插入图片描述
特点:匿名函数的生命周期只在当前一行。(当场构造,当场析构)

这篇关于类和对象周边知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/784640

相关文章

JSON字符串转成java的Map对象详细步骤

《JSON字符串转成java的Map对象详细步骤》:本文主要介绍如何将JSON字符串转换为Java对象的步骤,包括定义Element类、使用Jackson库解析JSON和添加依赖,文中通过代码介绍... 目录步骤 1: 定义 Element 类步骤 2: 使用 Jackson 库解析 jsON步骤 3: 添

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

java中VO PO DTO POJO BO DO对象的应用场景及使用方式

《java中VOPODTOPOJOBODO对象的应用场景及使用方式》文章介绍了Java开发中常用的几种对象类型及其应用场景,包括VO、PO、DTO、POJO、BO和DO等,并通过示例说明了它... 目录Java中VO PO DTO POJO BO DO对象的应用VO (View Object) - 视图对象

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

Java第二阶段---09类和对象---第三节 构造方法

第三节 构造方法 1.概念 构造方法是一种特殊的方法,主要用于创建对象以及完成对象的属性初始化操作。构造方法不能被对象调用。 2.语法 //[]中内容可有可无 访问修饰符 类名([参数列表]){ } 3.示例 public class Car {     //车特征(属性)     public String name;//车名   可以直接拿来用 说明它有初始值     pu