完整的类(无参构造函数,有参构造函数,拷贝构造函数,赋值运算符重载,析构函数)

本文主要是介绍完整的类(无参构造函数,有参构造函数,拷贝构造函数,赋值运算符重载,析构函数),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

之所以又发一遍,是因为前面好像写的有问题(其实有没有我也忘了,记得好像是有点小问题),至于原因嘛,就是是懒.(毕竟我只是为了从头再走一遍做下笔记而已)

但是我怕万一有小伙伴看到了产生误导就不好了,误人子弟的事做了亏心啊.所以就把它单独拿出来发了一下.

#define _CRT_SECURE_NO_WARNINGS#include <iostream>using namespace std;class Student
{
public://无参构造函数Student(){this->m_name = new char[1];*this->m_name = 0;}//有参构造函数Student(const char* name){m_name = new char[strlen(name) + 1];strcpy(m_name, name);}//拷贝构造函数Student(const Student& s){m_name = new char[strlen(s.m_name) + 1];strcpy(m_name, s.m_name);}//赋值运算符重载(反正我一直叫它赋值构造函数)Student& operator=(const Student& s){//因为需要释放原空间,如果不做此判断,会赋值释放的空间(值不确定)if (m_name == s.m_name){return *this;}if (this->m_name != nullptr){delete[]this->m_name;this->m_name = nullptr;}this->m_name = new char[strlen(s.m_name) + 1];strcpy(this->m_name, s.m_name);return *this;}//析构函数~Student(){if (this->m_name != nullptr){delete[]this->m_name;this->m_name = nullptr;}}void studentShow()const{cout << this->m_name << endl;}private:char* m_name;
};int main()
{//调用有参构造Student s = "hello world";//调用无参构造函数Student s2;//调用复制构造函数Student s3(s2);//调用赋值构造函数s2 = s3 = s;s.studentShow();s2.studentShow();s3.studentShow();return 0;
}

输出

        hello world

        hello world

        hello world

这篇关于完整的类(无参构造函数,有参构造函数,拷贝构造函数,赋值运算符重载,析构函数)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

在React中引入Tailwind CSS的完整指南

《在React中引入TailwindCSS的完整指南》在现代前端开发中,使用UI库可以显著提高开发效率,TailwindCSS是一个功能类优先的CSS框架,本文将详细介绍如何在Reac... 目录前言一、Tailwind css 简介二、创建 React 项目使用 Create React App 创建项目

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

MySQL中慢SQL优化方法的完整指南

《MySQL中慢SQL优化方法的完整指南》当数据库响应时间超过500ms时,系统将面临三大灾难链式反应,所以本文将为大家介绍一下MySQL中慢SQL优化的常用方法,有需要的小伙伴可以了解下... 目录一、慢SQL的致命影响二、精准定位问题SQL1. 启用慢查询日志2. 诊断黄金三件套三、六大核心优化方案方案

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

kotlin的函数forEach示例详解

《kotlin的函数forEach示例详解》在Kotlin中,forEach是一个高阶函数,用于遍历集合中的每个元素并对其执行指定的操作,它的核心特点是简洁、函数式,适用于需要遍历集合且无需返回值的场... 目录一、基本用法1️⃣ 遍历集合2️⃣ 遍历数组3️⃣ 遍历 Map二、与 for 循环的区别三、高

C语言字符函数和字符串函数示例详解

《C语言字符函数和字符串函数示例详解》本文详细介绍了C语言中字符分类函数、字符转换函数及字符串操作函数的使用方法,并通过示例代码展示了如何实现这些功能,通过这些内容,读者可以深入理解并掌握C语言中的字... 目录一、字符分类函数二、字符转换函数三、strlen的使用和模拟实现3.1strlen函数3.2st

Java逻辑运算符之&&、|| 与&、 |的区别及应用

《Java逻辑运算符之&&、||与&、|的区别及应用》:本文主要介绍Java逻辑运算符之&&、||与&、|的区别及应用的相关资料,分别是&&、||与&、|,并探讨了它们在不同应用场景中... 目录前言一、基本概念与运算符介绍二、短路与与非短路与:&& 与 & 的区别1. &&:短路与(AND)2. &:非短

MySQL中COALESCE函数示例详解

《MySQL中COALESCE函数示例详解》COALESCE是一个功能强大且常用的SQL函数,主要用来处理NULL值和实现灵活的值选择策略,能够使查询逻辑更清晰、简洁,:本文主要介绍MySQL中C... 目录语法示例1. 替换 NULL 值2. 用于字段默认值3. 多列优先级4. 结合聚合函数注意事项总结C