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

  • 本章节主要介绍c++类成员初始化的方式及不同方式对性能的影响。
  • 一种是在构造函数{}内部进行初始化
  • #include
    #include
    
    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;
    }

    C++学习笔记(二十):c++ 成员初始化列表_第1张图片

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

  • #include
    #include
    
    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;
    }

    C++学习笔记(二十):c++ 成员初始化列表_第2张图片

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

  • C++学习笔记(二十):c++ 成员初始化列表_第3张图片

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

  • C++学习笔记(二十):c++ 成员初始化列表_第4张图片

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

你可能感兴趣的:(c++,学习,笔记)