Rectangle w(Origin(),Extents())和Rectangle w2(o,e)之间的区别

时间:2012-02-09 18:54:11

标签: c++

// t1.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

struct Origin
{
    Origin(int _x=0, int _y=0) : x(_x), y(_y) {}
    int x;
    int y;
};

struct Extents
{
    Extents(int _width=0, int _height=0) : width(_width), height(_height) {}
    int width;
    int height;
};
class Rectangle
{
public:
    Rectangle(const Origin& o, const Extents& e) : m_origin(o), m_extents(e) {}

    Origin m_origin;
    Extents m_extents;
};

int _tmain(int argc, _TCHAR* argv[])
{
    Rectangle w(Origin(), Extents()); // declare a function 'w'

    Origin o(1, 2);
    Extents e(3, 4);
    Rectangle w2(o, e);               // define a variable 'w2'

    return 0;
}

问题>我们可以看到,w是函数的声明。 w2是变量的定义。 从编译器或语言的角度来看,使它们与众不同的关键区别是什么?

1 个答案:

答案 0 :(得分:1)

关键区别在于OriginExtends类型,而oe变量并且不能被解释为类型。