C++学习笔记(二十):c++ 成员初始化列表

2024-01-03 11:29:59
  • 本章节主要介绍c++类成员初始化的方式及不同方式对性能的影响。
  • 一种是在构造函数{}内部进行初始化
  • #include<iostream>
    #include<string>
    
    class Entity
    {
    public:
    	int m_X, m_Y;
    	Entity(int x, int y) 
    	{
    		m_X = x;
    		m_Y = y;
    	
    	}
    	void PrintVal()
    	{
    		std::cout << "X: " << m_X << " Y: " << m_Y << std::endl;
    	}
    
    
    };
    
    int main()
    {
    	Entity e(1,2);
    	e.PrintVal();
    
    	std::cin.get();
    	return 0;
    }

  • 另一种是在构造函数的{}外面进行初始化成员变量

  • #include<iostream>
    #include<string>
    
    class Entity
    {
    public:
    	int m_X, m_Y;
    	Entity(int x, int y) 
    		:m_X(x), m_Y(y)
    	{
    	}
    	void PrintVal()
    	{
    		std::cout << "X: " << m_X << " Y: " << m_Y << std::endl;
    	}
    
    
    };
    
    int main()
    {
    	Entity e(1,2);
    	e.PrintVal();
    
    	std::cin.get();
    	return 0;
    }

  • 上诉两种初始化方式在特定情形下性能不同,先说结论,建议在任何时候都使用第二种方式进行初始化。原因如下所示:

  • 上图中在Entity类{}内部初始化Test,则会执行两次Test的构造函数;

  • 上图中在Entity类{}外部初始化Test,则会执行一次Test的构造函数。

文章来源:https://blog.csdn.net/qq_16701727/article/details/135345402
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。