码迷,mamicode.com
首页 > 其他好文 > 详细

学习:类和对象——初始化列表和内部类

时间:2019-11-14 23:51:32      阅读:36      评论:0      收藏:0      [点我收藏+]

标签:str   一个   oid   对象   c++类   copy   on()   end   外部   

初始化列表:

作用:

C++提供了初始化列表语法,用来初始化属性

自己感觉比较好理解,就简单了几行代码吧,但是在类中存储类的时候使用还是需要注意下的

一个简单的示例

#include<iostream>
#include<string>

using namespace std;

class Person{
public:
    Person() {
        cout << "无参构造" << endl;
    }

    Person(int a, int b,int c): m_a(a),m_b(b),m_c(c) { 
        cout << "有参构造" << endl;
        cout << m_a << m_b << m_c << endl;
    }

private:
    int m_a;
    int m_b;
    int m_c;
};

int main() {
    Person p1(1, 2, 3);
    system("pause");
    return 0;
}

类对象作为类成员:

刚面提到的注意点其实也就是在这里了

C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员

这里代码的话直接copy老师的了哈

这里需要注意的是类中包含类的时候构造函数析构函数调用的顺序,先调用内部类的构造方法然后再调用外部类的构造方法,然后对于析构方法的调用顺序是相反的,先是外部类析构方法调用,然后再是内部类析构方法的调用

#include<iostream>
#include<string>

using namespace std;

class Phone
{
public:
    Phone(string name)
    {
        m_PhoneName = name;
        cout << "Phone构造" << endl;
    }

    ~Phone()
    {
        cout << "Phone析构" << endl;
    }

    string m_PhoneName;

};


class Person
{
public:

    //初始化列表可以告诉编译器调用哪一个构造函数
    Person(string name, string pName) :m_Name(name), m_Phone(pName)
    {
        cout << "Person构造" << endl;
    }

    ~Person()
    {
        cout << "Person析构" << endl;
    }

    void playGame()
    {
        cout << m_Name << " 使用" << m_Phone.m_PhoneName << " 牌手机! " << endl;
    }

    string m_Name;
    Phone m_Phone;

};
void test01()
{
    //当类中成员是其他类对象时,我们称该成员为 对象成员
    //构造的顺序是 :先调用对象成员的构造,再调用本类构造
    //析构顺序与构造相反
    Person p("张三", "苹果X");
    p.playGame();

}


int main() {

    test01();

    system("pause");

    return 0;
}

学习:类和对象——初始化列表和内部类

标签:str   一个   oid   对象   c++类   copy   on()   end   外部   

原文地址:https://www.cnblogs.com/zpchcbd/p/11863228.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!