zoukankan      html  css  js  c++  java
  • 学习:类和对象——初始化列表和内部类

    初始化列表:

    作用:

    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;
    }
    
  • 相关阅读:
    (转)hdu 3436Queue-jumpers--splay+离散化
    (原)2018牛课多校第4场--G
    解压和生成 system.img&data.img ( ext4格式)
    Linux中的shift命令
    git commit 编辑器
    关于android.mk中的LOCAL_OVERRIDES_PACKAGES 说明
    android源码解析 ---- camera 照相机 摄像机
    补丁git format-patch && git-am用法
    LCD背光设备的 驱动框架2
    PWM(脉宽调制)的基本原理 及其 应用实例
  • 原文地址:https://www.cnblogs.com/zpchcbd/p/11863228.html
Copyright © 2011-2022 走看看