• 关于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");
    }
    

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

  • 相关阅读:
    Ubuntu 18.04 设置静态IP
    面试问题总结
    hadoop集群搭建流程
    胡适:天下没有白费的努力
    学习的技术内容
    Windows MySql安装
    MySql 基础知识
    windows maven 安装与配置
    Logstash抽取数据到Elasticsearch(1)
    后台运行导入数据库
  • 原文地址:https://www.cnblogs.com/xiaochige/p/6704352.html
Copyright © 2020-2023  润新知