首页 > 编程语言 >C++高级程序设计 20241228

C++高级程序设计 20241228

时间:2024-12-28 13:40:54浏览次数:5  
标签:name age C++ Person 函数 20241228 程序设计 成员 构造函数

当然可以。在C++中,面向对象编程(OOP)是一种编程范式,它使用类和对象来模拟现实世界中的实体和行为。以下是构造函数、拷贝构造函数、析构函数和普通成员函数的简单解释和例子:

1. 构造函数

构造函数是一种特殊的成员函数,用于创建对象时初始化对象的状态。它与类同名,并且没有返回类型,甚至连void也不行。

例子:

class Person {
public:
    // 构造函数
    Person(string name, int age) {
        this->name = name;
        this->age = age;
    }

private:
    string name;
    int age;
};

// 使用
Person p1("Alice", 30);

2. 拷贝构造函数

拷贝构造函数用于创建一个对象作为另一个同类型对象的副本。它的第一个参数是该类类型的引用,并且通常被标记为常量引用,以避免自我赋值时的无限递归。

例子:

class Person {
public:
    // 拷贝构造函数
    Person(const Person& other) {
        this->name = other.name;
        this->age = other.age;
    }

private:
    string name;
    int age;
};

// 使用
Person p1("Alice", 30);
Person p2 = p1; // 使用拷贝构造函数

3. 析构函数

析构函数用于对象生命周期结束时执行清理工作,比如释放资源。它与构造函数相反,没有参数,没有返回值,并且不能被重写。

例子:

class Person {
public:
    // 析构函数
    ~Person() {
        cout << "Person is being destroyed" << endl;
    }

private:
    string name;
    int age;
};

// 使用
Person p1("Alice", 30);
// 当p1离开作用域时,析构函数被调用

4. 普通成员函数

普通成员函数是类中定义的函数,用于实现类的行为。它们可以访问类的私有成员。

例子:

class Person {
public:
    // 构造函数
    Person(string name, int age) : name(name), age(age) {}

    // 普通成员函数
    void introduce() {
        cout << "Hello, my name is " << name << " and I am " << age << " years old." << endl;
    }

private:
    string name;
    int age;
};

// 使用
Person p1("Alice", 30);
p1.introduce(); // 输出: Hello, my name is Alice and I am 30 years old.

在这些例子中,Person类有三个成员:一个构造函数,一个普通成员函数introduce,和一个私有成员变量nameage。构造函数用于初始化这些成员变量,拷贝构造函数用于创建一个Person对象的副本,析构函数用于在对象销毁时执行清理工作,而introduce是一个普通成员函数,用于输出对象的介绍信息。

标签:name,age,C++,Person,函数,20241228,程序设计,成员,构造函数
From: https://www.cnblogs.com/landboat/p/18637437

相关文章

  • 【C++】异常
      ......
  • C++生成随机裁剪尺寸
    随机裁剪尺寸(x,y,w,h),其中裁剪区域的宽度和高度不能超过640和360,保证裁剪的宽度和高度(w)和(h)是2的倍数代码#include<iostream>#include<cstdlib>//Forrand()andsrand()#include<ctime>//Fortime()structCropRect{intx;//Top-l......
  • C++ 中,直接打印枚举的名称
    在C++中,直接打印枚举的名称并不容易,因为枚举本质上是整数类型,编译后的程序不会保存枚举名称的字符串形式。但是,有一些方法可以实现这个功能。方法1:手动映射(常用方法)使用一个映射表或 switch 语句,将枚举值与其对应的名称关联起来。#include<iostream>#include<string>......
  • 跟我学C++中级篇——C++17中的std::void_t
    一、std::void_tstd::void_t是从C++17提供的一个元函数,主要用来在SFINAE应用上更简单方便一些。老规矩先看一下其定义形式:template<class...>usingvoid_t=void;这段代码单纯从代码意义上理解有两个情况:一是它使用了变参模板;二是使用了别名应用。它是一种很简单的......
  • C++日志管理从基础到完善
    万古教员有名言,自信人生二百年。个人主页:oioihoii喜欢内容的话欢迎关注、点赞、收藏!感谢支持,祝大家祉猷并茂,顺遂无虞!版本一:基础日志代码在设计C++日志系统时,我们需要考虑以下几个关键点:易用性:日志系统应该易于使用,开发者应该能够轻松地添加日志条目。性能:日志系统应......
  • 2024-2025-1 20241417 《计算机基础与程序设计》第十四周学习总结
    2024-2025-120241417《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标<《C语言程序设计......
  • 《计算机基础与程序设计》第十四周学习总结
    学期(2024-2025-1)学号(20241412)《计算机基础与程序设计》第十四周学习总结作业信息这个作业属于哪个课程<班级的链接>2024-2025-1-计算机基础与程序设计这个作业要求在哪里<作业要求的链接>2024-2025-1计算机基础与程序设计第十四周作业)教材学习内容总结复习......
  • 《 C++ 点滴漫谈: 十三 》C++ 中的虚拟函数革命:virtual、override 和 final 如何改变你
    摘要这篇博客深入探讨了C++中virtual、override和final关键字的核心概念与使用技巧。我们从虚函数和多态的基本概念出发,讲解了如何通过virtual实现动态绑定,使程序能够在运行时根据对象类型调用适当的函数。接着,我们深入分析了override的使用,帮助开发者避免重写错......
  • C++大内存分配错误
    支持一对一答疑的购买网址C++无法分配大内存当影像较大时,m和n是int类型时,char*a=newchar[m*n]可能出现无法分配内存的错误原因分析:由于早期数据处理需求对内存需要较小,例如早期影像较小,影像长宽的积较小,char*a=newchar[m*n]不会出错。时代变化,影像体积变大,老代码仍旧使......
  • c++入门
    ⦁C++基础1.数据类型主要有五类数据类型:布尔类型,字符型,整型,浮点型和无类型。部分数据类型及所占位数:数据类型C++语言表示所占位数范围字符型char8b(1字节)-128~127或0~255无符号字符型unsignedchar8b(1字节)0~255整型int......