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

定义

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

class A{}
class B
{
    A a;
}

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

验证

示例代码:

#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");
}

输出结果:

file

结论

对于Person类来说

  • 构造时先构造对象成员再构造本类
  • 析构时先析构本类再析构对象成员
本文作者:小小黑
本文链接:https://lonelyenderman.top/archives/318
版权声明:本站采用 BY-NC-SA 进行许可。转载请注明出处!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(*^▽^*)
 ̄﹃ ̄
(╯‵□′)╯︵┴─┴
(~ ̄▽ ̄)~
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
( ͡° ͜ʖ ͡°)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
つ﹏⊂
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
(´▽`ʃ♡ƪ)
w(゚Д゚)w
(๑•̀ㅂ•́)و✧
(#`O′)
凸(艹皿艹 )
o(≧口≦)o
≡ω≡
(*/ω\*)
○| ̄|_
(⊙ˍ⊙)
Σ(っ °Д °;)っ
o( ̄ヘ ̄o#)
<( ̄︶ ̄)>
(。・∀・)ノ゙
(o゜▽゜)o☆
╥﹏╥
ヾ(´・ω・`)ノ
😂
😀
😅
😊
🙂
😍
😘
😜
😝
😏
😒
🙄
😳
😔
😫
😱
😭
😶
🌚
😣
🤨
😣
🤐
😪
🤤
🥵
🤮
😨
😱
😓
🤬
👴
🤡
🙈
💊
🙏
🤺
💩
👻
🙌
🖕
👍
👫
👌
🙏
👀
🐒
🔪
Source: github.com/zhheo/Sticker-Heo
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
Heo
花!
上一篇
下一篇