zoukankan      html  css  js  c++  java
  • 关于POD和非POD类型中,list initialization和constructor initialization(未解决)

    • 如果你的成员是POD类型的,那么list initialization和constructor initialization没有任何区别
    #include<iostream>
    using namespace std;
    
    class A
    {
    	int a;
    	double b;
    	A() :a(0), b(0.0)//结构体初始化
    	{
    		
    	}
    	A(int a_in, double b_in) :a(a_in), b(b_in)//结构体初始化
    	{}
    	~A() {}
    
    };
    class B
    {
    	int a;
    	double b;
    	B()//列表初始化
    	{
    		a = 0;
    		b = 0.0;
    	}
    	B(int a_in, double b_in)//列表初始化
    	{
    		a = a_in;
    		b = b_in;
    	}
    	~B() {}
    
    };
    int main()
    {
    	system("pause");
    }
    
    •   但是成员变量的类型是非POD类型,比如自定义类型,那么list inlitialization的代码就会变成
    #include<iostream>
    using namespace std;
    
    struct A
    {
    
    	int a;
    	A() { ; }
    	A(int a_in) :a(a_in)
    	{	}
    };
    struct B
    {
    	double b;
    	B() {}
    	B(double b_in):b(b_in)
    	{	}
    };
    class D
    {
    	A a1;
    	B b1;
    	//D(int a, double b) :a1(a), b1(b)//结构体初始化,这个也是正确的
    	//{}
    	D(int a, double b)//列表初始化
    	{
    		a1 = a;//这里如果不给A B写无参构造函数会出错
    		b1 = b;
    	}
    };
    
    int main()
    {
    	system("pause");
    }
    

      但是这里仍旧不知道列表初始化和结构体初始化的区别以及运算时间的长短

  • 相关阅读:
    2.15 STL复习
    20190214Test(栈与队列)
    STL列表链式前向星
    链式前向星(邻接表)
    Priority_queue详解
    List详解
    NOIP2019计划
    第二章笔记
    第一章笔记
    本地文件上传GitHub
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6704352.html
Copyright © 2011-2022 走看看