C++入门篇(5)——类和对象(2)

目录

1.类的6个默认成员函数

 2.构造函数

2.2  概念

2.3  特性

3.析构函数

3.1  概念

3.2  特性


1.类的6个默认成员函数

如果一个类一个成员都没有,那么这个类就是空类。但空类并非什么都没有,编译器会对任何一个类都生成六个默认成员函数。

 2.构造函数

2.2  概念

对于一个类的创建通常都伴随着初始化,但是有时候自己可能会忘记调用初始化函数,这时候C++提供了能自动调用的函数来完成类对象的初始化,这个函数就叫构造函数。

编译器会提供默认的构造函数,如果自己写了构造函数,编译器就会使用自己写的。

2.3  特性

构造函数的函数名与类名相同,在自己定义构造函数时,应该这么写

class Date
{
public:Date(int year = 2024, int month = 2, int day = 15){_year = year;_month = month;_day = day;}
private:int _year;int _month;int _day;
};

构造函数不用写返回值类型(并且也没有返回值类型),形参列表可以任意指定形参。

除了不写返回值类型和函数名必须与类名相同之外,构造函数就和普通成员函数在定义时没有区别,同样可以重载,使用缺省值等。

C++11中,构造函数的缺省值可以不给在形参列表,而直接写在成员后,即内置类型成员变量声明时可以给默认值

class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}
private:int _year = 2024;int _month = 2;int _day = 15;
};

而且直接给在成员后也可以让编译器自动生成的默认函数使用这些缺省值。

也就是说,像这样写并不意味着在创建类对象时,成员变量就已经定义出来(在内存中开辟了一块存放成员变量的空间),而是用这些值作为构造函数形参的缺省值去初始化。

C++ 11 支持这么写主要是为了弥补之前标准中编译器生成的默认构造函数不会处理内置类型(即非自定义类型,如int,double,bool,char等),只会处理自定义类型。而在C++ 11中打上了这个补丁,让人用起来更加便利了。

3.析构函数

3.1  概念

已经学过构造函数了,与之相反,析构函数会清理类中的资源,比如类中指向一块动态开辟出的空间的指针,会释放这块空间。注意,析构函数并不是完成对类对象本身的销毁,而是清理类对象中资源的清理。

3.2  特性

析构函数是特殊的成员函数,特征:

1. 析构函数名是在类名前加上字符 ~。
2. 无参数无返回值类型。
3. 一个类只能有一个析构函数。若未显式定义,系统会自动生成默认的析构函数。注意:析构
函数不能重载
4. 对象生命周期结束时,C++编译系统系统自动调用析构函数。

class Date
{
public:Date(int year, int month, int day){_year = year;_month = month;_day = day;}~Date(){}
private:int _year = 2024;int _month = 2;int _day = 15;
};

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

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

相关文章

Git 初学

目录 一、需求的产生 二、版本控制系统理解 1. 认识版本控制系统 2. 版本控制系统分类 (1)集中式版本控制系统 缺点: (2)分布式版本控制系统 三、初识 git 四、git 的使用 例:将 “ OLED文件夹 ”…

java排课管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java排课管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&#…

Learn LaTeX 020 - LaTex Math Space Font 数学排版之空格、字号、字体

数学排版中很好的处理空格、字号和字体可以使你的出版文档平添更多的特色。 这个视频介绍并演示了这些方面的相关配置。 https://www.ixigua.com/7298100920137548288?id7307759620737466891&logTagb138f9145ce004f6b52a

2024下载使用CleanMyMac X软件时需要注意什么?

使用CleanMyMac X清理系统垃圾文件的步骤如下: 打开CleanMyMac X软件。在主界面中,选择“清理”功能块下的“清理系统垃圾”选项。点击“扫描”按钮,软件将自动扫描系统垃圾,包括缓存文件、系统日志文件等。扫描完成后&#xff0…

【Java基础题型】求商和余数

需求:给定两个整数,被除数和除数(都是正数,且不超过int的范围)。 将两数相除,要求不使用乘法、除法和%运算符。 得到商和余数。 被除数 %除数商 ... 余数 #这里%代表除 //1、求商,就是求里…

【剪辑必备】今天我教你如何手动去下载苹果官网4K预告片 完全免费

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起学习和进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&a…

C++面向对象程序设计-北京大学-郭炜【课程笔记(二)】

C面向对象程序设计-北京大学-郭炜【课程笔记(二)】 1、结构化程序设计结构化程序设计的不足 2、面向对象的程序设计2.1、面向对象的程序设计2.2、从客观事物抽象出类2.3、对象的内存分配2.4、对象之间的运算2.5、使用类的成员变量和成员函数用法1&#x…

代码随想录算法训练营第51天 | 139.单词拆分 多重背包理论基础

单词拆分 这道题最后是判断能否组成,很像回溯法的问题形式,和分割回文串那道题比较类似,所以是可以用回溯法解决的,但是回溯法需要使用记忆化递归来避免超时。 class Solution{ public:bool backtracking(const string s, const …

浅谈设计模式

设计模式 一、设计模式简介二、设计模式分类1.创建型模式(Creational Patterns)2.结构型模式(Structural Patterns)3.行为型模式(Creational Patterns) 三、创建型模式1.工厂模式2.抽象工厂模式3.单例模式4…

【数据库】哪些操作会导致索引失效

🍎个人博客:个人主页 🏆个人专栏:数据库 ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库管理中,索引的有效性对于查询性能至关重要。然而,索引可能会因为各种操…

蓝桥杯真题:纸张尺寸

import java.util.Scanner; // 1:无需package // 2: 类名必须Main, 不可修改public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);//在此输入您的代码...String s scan.nextLine();char[] c s.toCharArray();char c1 c[1];in…

2024 CKS 题库 | 6、创建 Secret

不等更新题库 CKS 题库 6、创建 Secret Task 在 namespace istio-system 中获取名为 db1-test 的现有 secret 的内容 将 username 字段存储在名为 /cks/sec/user.txt 的文件中,并将password 字段存储在名为 /cks/sec/pass.txt 的文件中。 注意:你必须创…

数据结构——顺序表专题

目录 1. 数据结构的相关概念什么是数据结构为什么需要数据结构? 2. 顺序表顺序表的概念及结构顺序表分类静态顺序表动态顺序表 3. 动态顺序表的实现准备工作顺序表的初始化顺序表的扩容尾插头插尾删头删指定位置插入数据指定位置删除数据 4. 全部完整代码**test.c**…

jenkins-maven环境的安装

jenkins-maven环境的安装

【从Python基础到深度学习】2. Ubuntu及插件安装

本期所有软件安装包:链接:https://pan.baidu.com/s/1UVEYm-12FivAnrE5NUXevg?pwdum60 一、安装Ubuntu 1.1 软件安装包:下载 VMware Workstation Pro | CN 一直点下一步即可 1.2 双击运行软件: 输入密钥 1 、VMware 15密钥 …

Git远程仓库的使用(Gitee)及相关指令

目录 1 远程仓库的创建和配置 1.1 创建远程仓库 1.2 设置SSH公钥 2 指令 2.1 git remote add 远端名称(一般为origin) 仓库路径 2.2 git remote 2.3 git push [-f] [--set-upstream] [远端名称 [本地分支名][:远端分支名]] 2.3 git clone url 2.4 git fetch 2.5 git p…

【C语言】指针的进阶篇,深入理解指针和数组,函数之间的关系

欢迎来CILMY23的博客喔,本期系列为【C语言】指针的进阶篇,深入理解指针和数组,函数之间的关系,图文讲解其他指针类型以及指针和数组,函数之间的关系,带大家更深刻理解指针,以及数组指针&#xf…

年假作业11

一、选择题 ADDAADADC&#xff0c;BD,D,B,BD,D,C,CD 二、填空题 6 2&#xff0c;3,5,7,9 rgb *s, - a 2,5 *s 三、编程题 1、 #include <iostream> using namespace std; int main() {int arr[10]{10,20,30,40,50,60,70,80,90,100};int m;//从标准输入读取一个…

Javaweb之SpringBootWeb案例之AOP核心概念的详细解析

2.3 AOP核心概念 通过SpringAOP的快速入门&#xff0c;感受了一下AOP面向切面编程的开发方式。下面我们再来学习AOP当中涉及到的一些核心概念。 1. 连接点&#xff1a;JoinPoint&#xff0c;可以被AOP控制的方法&#xff08;暗含方法执行时的相关信息&#xff09; 连接点指的…

【Win10 触摸板】在插入鼠标时禁用触摸板,并在没有鼠标时自动启用触摸板。取消勾选连接鼠标时让触摸板保持打开状态,但拔掉鼠标后触摸板依旧不能使用

出现这种问题我的第一反应就是触摸板坏了&#xff0c;但是无意间我换了一个账户发现触摸板可以用&#xff0c;因此推断触摸板没有坏&#xff0c;是之前的账户问题&#xff0c;跟系统也没有关系&#xff0c;不需要重装系统。 解决办法&#xff1a;与鼠标虚拟设备有关 然后又从知…