zoukankan      html  css  js  c++  java
  • c++组合类构造函数顺序

    #include <iostream>
    #include <cmath>
    using namespace std;
     
    class Point{
    	private:
    		int x, y;
    	
    	public:
    		Point(int a = 0, int b = 0)
    		{
    			x = a; y = b;
    			cout << "Point construction: " << x << ", "<< y << endl;
    		}
    		Point(Point &p) // copy constructor,其实数据成员是int类型,默认也是一样的 
    		{
    			x = p.x;
    			y = p.y;
    			cout << "Point copy construction: " << x << ", "<< y << endl; 
    		}
    		int getX()
    		{
    			return x;
    		}
    		int getY()
    		{
    			return y;
    		}
    }; 
     
    class Line{
    	private:
    		Point start, end;
    	
    	public:
    		Line(Point pstart, Point pend)
                        :start(pstart), end(pend) // 组合类的构造函数对内前对象成员的初始化必须采用初始化列表形式
    		{
    			cout << "Line constructior " << endl;
    		}
    		float getDistance()
    		{
    			double x = double(end.getX()-start.getX());
    			double y = double(end.getY()-start.getY());
    			return (float)(sqrt)(x*x+y*y);
    		}
    };
     
    int main()
    {
    	Point p1(10,20),p2(100,200);
    	Line line(p1,p2);
    	cout << "The distance is: "<<line.getDistance()<<endl; return 0;
    }
    

    输出结果:

    Point construction: 10, 20
    Point construction: 100, 200
    Point copy construction: 100, 200
    Point copy construction: 10, 20
    Point copy construction: 10, 20
    Point copy construction: 100, 200
    Line constructior
    The distance is: 201.246
    

    Line line(p1,p2);这一行代码在vs下面直接跳到point的复制构造函数,然后才进入line的构造函数的初始化列表,并再次进入point的复制构造函数

  • 相关阅读:
    exchange 2013 versions
    Outlook Web App Customization
    Using the FullCalendar Plugin in SharePoint 2013 Apps
    erlide的调试设置
    MySQLProxy
    Flex Socket安全策略<policyfilerequest/>及应对方法
    一些flex教程
    CentOS apache 配置
    C++与Flex之间socket通信policyfilerequest解决方案
    免费使用Adobe Flash Builder 4.5方法
  • 原文地址:https://www.cnblogs.com/working-in-heart/p/12089233.html
Copyright © 2011-2022 走看看