Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对象成员与本类的构造与析构顺序(C++)

对象成员与本类的构造与析构顺序(C++)

作者头像
LonelyEnderman
发布于 2022-10-27 06:03:07
发布于 2022-10-27 06:03:07
34800
代码可运行
举报
运行总次数:0
代码可运行

定义

当一个类中的成员作为另一个类的对象,称该成员为对象成员 例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class A{}
class B
{
    A a;
}

B类中有对象A作为成员,A为对象成员

验证

示例代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include<iostream>
#include<string>
using namespace std;

//手机类
class Phone
{
public:
    Phone(string name)
    {
        cout << "Phone构造函数调用" << endl;
        phName = name;
    }

    ~Phone()
    {
        cout << "Phone的析构函数调用" << endl;
    }

    //型号
    string phName;
};

//人类
class Person
{
public:
    //Phone pPhone = pName 隐式转换(Phone pPhone = Phone(pName))
    //利用初始化列表初始化属性
    Person(string name, string pname):pName(name),pPhone(pname)
    {
        cout << "Person构造函数调用" << endl;
    }

    ~Person()
    {
        cout << "Person的析构函数调用" << endl;
    }

    //姓名
    string pName;
    //手机
    Phone pPhone;
};

void test01()
{
    Person p("张三", "K20pro");
    cout << p.pName << "手持" << p.pPhone.phName << endl;
}
int main()
{
    test01();
    system("pause");
}

输出结果:

结论

对于Person类来说

  • 构造时先构造对象成员再构造本类
  • 析构时先析构本类再析构对象成员
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-3-15 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
C++之继承中的构造和析构学习总结
在我们前面学习过类中的构造函数,以及析构函数,那么自然而然,在继承关系中,必然是存在着析构和构造着。
用户6280468
2022/03/21
3940
【c++】继承学习(二):探索 C++ 中派生类的默认机制与静态成员共享
派生类的构造函数必须调用基类的构造函数初始化基类的那一部分成员。如果基类没有默认的构造函数,则必须在派生类构造函数的初始化列表阶段显示调用
用户11029103
2024/05/06
2110
【c++】继承学习(二):探索 C++ 中派生类的默认机制与静态成员共享
C++核心编程(上)
结论:C++推荐用引用技术,因为语法方便,引用本质是指针常量,但是所有的指针操作编译器都帮我们做了
C语言与CPP编程
2020/12/02
1.9K0
【C++】Chapter01 类与对象
封装的定义:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
Skrrapper
2025/03/25
1260
【C++】Chapter01 类与对象
【C++】从入门到精通第二弹——类的构造与析构函数
写在最前面的话 ——构造函数和析构函数是两个特殊的成员函数,都没有返回值,构造函数名和类名相同,析构函数名只是在类名前加上 ~ 构造函数主要用来在创建对象时给对象中的数据成员赋值,主要目的是初始化对象, 析构函数的功能与构造函数正好相反,析构函数是用来释放对象的,再删出对象前,对对象进行清理工作。
洁洁
2023/11/08
1820
虚析构与纯虚析构(C++)
其中,virtual void func() = 0;称为纯虚函数,也即是在成员函数的开头加上virtual关键词,且没有函数实现,取而代之的是末尾的=0;,而一旦类中有一个纯虚函数,则该类被称为抽象类,抽象类具有以下特点:
LonelyEnderman
2022/10/27
6740
虚析构与纯虚析构(C++)
拷贝构造与深浅拷贝
如果一个构造函数的第一个参数是自身类型的引用,而且任何额外参数都有默认值,则此构造函数是拷贝构造函数。
洁洁
2023/10/10
2110
拷贝构造与深浅拷贝
黑马程序员c++课件_黑马java课程大纲
配套视频: https://www.bilibili.com/video/BV1et411b73Z 只是为方便学习,不做其他用途,在此发布C++基础入门部分配套讲义,原作者为黑马程序
全栈程序员站长
2022/11/04
2K0
【C++课程学习】:继承:默认成员函数
子类的构造函数在初始化列表时,我们发现父类的声明在子类之前。所以不管在初始化列表怎么写,都是先初始化父类,再调子类的构造。
用户11396661
2024/12/09
1170
【C++课程学习】:继承:默认成员函数
C++ | 对象的初始化和清理
今天来分享一下C++中对象的初始化和清理。主要是介绍构造函数和析构函数,另外也会讲一下列表初始化和静态成员这些。本节内容主要参考自黑马程序员:https://www.bilibili.com/video/BV1et411b73Z
飞哥
2020/08/05
1.7K0
【C++高潮——类与对象】:类的定义,访问限定符,类域,实例化,this指针,默认成员函数,构造,析构,拷贝构造,运算符重载,类型转换,static成员,友元,内部类,匿名对象,对象拷贝编译器优化
类是一种用户自定义的数据类型,它将数据(成员变量)和操作这些数据的函数(成员函数)封装在一起。在C++中,一般使用class关键字来定义类,其基本格式如下:
用户11029137
2025/03/11
5390
【C++高潮——类与对象】:类的定义,访问限定符,类域,实例化,this指针,默认成员函数,构造,析构,拷贝构造,运算符重载,类型转换,static成员,友元,内部类,匿名对象,对象拷贝编译器优化
c++之对象的初始化和清理
在生活中我们购买单电子产品通常都会有出厂设置,在某一天我们不用也会删除一些自己的数据信息以保证安全。
西西嘛呦
2020/08/26
4890
C++对象的初始化和清理之构造函数和析构函数分析与实例(一)
c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和清理工作。
CtrlX
2022/08/10
6780
C++对象的初始化和清理之构造函数和析构函数分析与实例(一)
c++面向对象的一些问题1.0
构造函数 特殊的成员函数,给对象的初始化,不需要用户调用,建立对象时,自动执行 它的函数名字与类相同,可以重载,没有返回值和函数类型。 如果不写构造函数,类会给出一个无参数的构造函数。 复制构造函数 a.程序新建立一个对象时,用另一个对象对它初始化。 b. 函数的参数为对象。 c. 函数的返回值为对象。 ---- 特殊的数据成员 常数据成员,const声明,其值不能改变。 const string sex; 静态数据成员,static声明,属于类,只能在类外初始化。 stat
热心的社会主义接班人
2018/04/27
5870
c++面向对象的一些问题1.0
C/C++ 类与构造析构等知识
构造/析构 函数: 构造函数与类名相同,没有返回值,不写void,可以发生重载,可以有参数
王 瑞
2022/12/28
4750
C++深拷贝与浅拷贝,初始化列表,对象成员,静态成员相关分析
使用new创建堆区数据,需要人为释放,new出来的东西是等到整个进程结束了才会自动释放。如果这个对象已经销毁,而这个类里没有析构函数却恰恰有个指针,自动释放的是栈区的变量,而不是堆区的,那么这个地址就没有指针指向它,就造成了内存泄漏。
CtrlX
2022/08/10
9491
C++深拷贝与浅拷贝,初始化列表,对象成员,静态成员相关分析
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
内置类型(如 int):对于内置类型,使用初始化列表和在构造函数体内赋值在效率上几乎没有差别。内置类型没有构造函数,也不会进行隐式初始化(即它们可能持有垃圾值)。构造函数体内赋值或初始化列表赋值都只进行一次操作。因此,选择哪种方式主要是基于代码的清晰性和一致性。
半截诗
2024/10/09
4550
【C++篇】C++类与对象深度解析(四):初始化列表、类型转换与static成员详解
C++多态之析构和纯虚析构分析与示例
多态使用时,如果子类中有属性开辟到堆区,那么父类指针在释放时无法调用到子类的析构代码
CtrlX
2022/09/23
4820
构造析构
这样你会发现隐藏的4个字节存储了你申请的对象数量,当delete加[]时,会先访问这4个字节的数据,然后再释放内存
DeROy
2020/05/11
5790
构造析构
【C++】类和对象之继承
简单来说就是类似于在一个类中包含了另一个类的成员函数和成员变量以及对应的访问权限。
啊QQQQQ
2024/11/19
1250
【C++】类和对象之继承
推荐阅读
相关推荐
C++之继承中的构造和析构学习总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验