// 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
是变量的定义。
从编译器或语言的角度来看,使它们与众不同的关键区别是什么?
答案 0 :(得分:1)
关键区别在于Origin
和Extends
是类型,而o
和e
是变量并且不能被解释为类型。