C++构造函数+复制构造函数+重载等号运算符调用

yizhihongxing

我们先从C++的构造函数开始。

构造函数

构造函数是一种特殊的成员函数,用于在对象创建时执行初始化操作。它的名称与类名相同,没有返回类型。

class Person {
public:
    Person(); // 默认构造函数
    Person(const char* name, int age); // 带参构造函数
private:
    char* m_name;
    int m_age;
};

Person::Person() {
    m_name = nullptr;
    m_age = 0;
}

Person::Person(const char* name, int age) {
    m_name = new char[strlen(name) + 1];
    strcpy(m_name, name);
    m_age = age;
}

以上代码定义了两个构造函数,其中第一个是默认构造函数,用于创建一个空的Person对象,第二个是带参构造函数,用于创建一个具有名字和年龄的Person对象。示例:

Person p1; // 调用默认构造函数
Person p2("Tom", 20); // 调用带参构造函数

复制构造函数

复制构造函数是一种特殊的构造函数,用于创建一个新对象并将旧对象的内容复制到新对象中。它的名称为类名,参数为一个常量引用类型的对象。

class Person {
public:
    Person(); // 默认构造函数
    Person(const char* name, int age); // 带参构造函数
    Person(const Person& other); // 复制构造函数
private:
    char* m_name;
    int m_age;
};

Person::Person(const Person& other) {
    m_name = new char[strlen(other.m_name) + 1];
    strcpy(m_name, other.m_name);
    m_age = other.m_age;
}

以上代码定义了一个复制构造函数。示例:

Person p1("Tom", 20);
Person p2 = p1; // 调用复制构造函数

重载等号运算符

重载等号运算符是一种特殊的成员函数,用于实现对象之间的赋值。它的名称为“operator=”,参数为一个常量引用类型的对象。

class Person {
public:
    Person(); // 默认构造函数
    Person(const char* name, int age); // 带参构造函数
    Person(const Person& other); // 复制构造函数
    ~Person(); // 析构函数
    Person& operator=(const Person& other); // 重载等号运算符
private:
    char* m_name;
    int m_age;
};

Person::~Person() {
    delete[] m_name;
}

Person& Person::operator=(const Person& other) {
    if (this != &other) {
        delete[] m_name;
        m_name = new char[strlen(other.m_name) + 1];
        strcpy(m_name, other.m_name);
        m_age = other.m_age;
    }
    return *this;
}

以上代码定义了一个重载等号运算符。示例:

Person p1("Tom", 20);
Person p2("John", 25);
p2 = p1; // 调用重载等号运算符

以上就是C++构造函数、复制构造函数和重载等号运算符的完整攻略,希望能对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C++构造函数+复制构造函数+重载等号运算符调用 - Python技术站

(0)
上一篇 2023年6月26日
下一篇 2023年6月26日

相关文章

  • 苹果IOS9.3.3越狱安装不兼容插件重启进入safe mode安全模式现象的解决方案

    苹果IOS9.3.3越狱安装不兼容插件重启进入safe mode安全模式现象的解决方案 问题描述 苹果IOS9.3.3越狱后,在Cydia中安装了某个不兼容的插件后,会出现重启以后进入safe mode安全模式的现象,无法正常使用。 解决步骤 为了解决这个问题,需要进行以下步骤的操作: 1.进入safe mode安全模式 首先,需要进入safe mode安全…

    other 2023年6月26日
    00
  • 解决C++全局变量只能初始化不能赋值的问题

    在C++中,全局变量具有特殊的初始化和赋值规则。全局变量只能在定义时进行初始化,而不能在其他位置和时刻进行赋值。这是因为全局变量处于全局范围内,具有全局生命周期,一旦被初始化就不能再次赋值。如果需要修改全局变量的值,则需要修改其所在的内存地址。 为了解决C++全局变量只能初始化不能赋值的问题,我们可以使用以下两种方法: 使用常量指针 我们可以将全局变量定义为…

    other 2023年6月20日
    00
  • 雷达无线电系列(一)几种常见的幅度分布函数(matlab)

    下面是关于float的完整攻略,包括介绍、使用和两个示例说明。 介绍 float是一种Python中的数据类型,用于表示浮点数。浮点数是一种带有小数点的数值,可以表示实数。在Python中,可以使用float类型来存储和处理浮点数。 使用 定义float变量: 在Python中,可以使用赋值语句定义float变量,例如: a = 1.23 b = 4.56 …

    other 2023年5月6日
    00
  • 安全框架Shiro和Spring Security比较

    安全框架Shiro和Spring Security比较 背景 在开发一个应用程序时,安全是涉及到的一个重要的方面。为了保护应用程序,我们需要在应用程序中实现一些安全措施。安全框架是实现这些安全措施的一个重要部分。在 Java 生态系统中,Shiro 和 Spring Security 是两个主要的安全框架。 本文将比较这两个安全框架在以下方面的异同点: 功能…

    其他 2023年3月28日
    00
  • js取数组最大值的四种方式

    JavaScript取数组最大值的四种方式 在 JavaScript 中,我们经常需要对数组中的元素进行处理,其中对于数组的最大值的计算就是非常常见的操作。下面将介绍 JavaScript 中取数组最大值的四种方式,分别是: 遍历查找 利用 Math.max() 函数 利用 ES6 的 … 扩展符和 Math.max() 函数 利用 reduce() 方…

    其他 2023年3月28日
    00
  • jQuery中$原理实例分析

    jQuery中$原理实例分析 什么是$符号 $符号是jQuery的简写。在jQuery中,所有的代码都是由$符号开头的。$符号的作用是为了简化JavaScript程序。同时,也可以帮助我们快速、安全地操作HTML文档。 $符号的实现原理 $符号是通过调用jQuery函数实现的。简单来说,jQuery函数会返回一个对象。这个对象上封装了许多函数和属性,我们可以…

    other 2023年6月27日
    00
  • php鸟哥:我也曾经是“不适合”编程的人

    以下是“php鸟哥:我也曾经是‘不适合’编程的人”的详细讲解,过程中包含两个示例说明的标准Markdown格式文本: php鸟哥:我也曾经是“不适合编程的人 在学习编程的过程中,我们可能会遇到各种各样的困难和挑战。php鸟哥也曾经“不适合”编程的人,但他通过不断的努力和学习,最终成为了一名优秀的程序员。本文将介绍php鸟哥的学习经验和方法,并提供两个常见的示…

    other 2023年5月10日
    00
  • iPhone手机内存不够用怎么办 解决苹果手机内存不足的几种方法

    iPhone手机内存不够用怎么办:解决苹果手机内存不足的几种方法 苹果手机内存不足可能会导致手机运行缓慢、应用程序崩溃等问题。为了解决这个问题,可以采取以下几种方法: 1. 清理手机内存 清理手机内存是解决内存不足问题的最简单方法之一。以下是一些清理手机内存的方法: 关闭不必要的后台应用程序:打开“设置”>“通用”>“后台应用刷新”,然后关闭不需…

    other 2023年8月1日
    00
合作推广
合作推广
分享本页
返回顶部