codecamp

C++ Point对象

作为一个复合结构的简单例子,可以考虑数学中点的概念。在一个层面上,点是我们以之作为一个对象的两个数字,即坐标。在数学符号中,点用括号中以逗号分隔的坐标表示。例如,(0,0)表示原点,(x,y)表示该点从原点起向右x个单位,向上y个单位。

在C++中,点可以很自然地以两个double表示。那么,问题是如何把这两个值组合成一个复合对象或结构呢?答案是结构体定义:

struct Point { 
   double x, y;
};

结构体定义出现在任何函数定义的外面,通常是在程序的开头(include语句之后)。

该定义表明,这个结构中体中有两个元素,分别命名为x和y。这些元素称为实例变量,原因我稍后将作出解释。

忘掉结构体定义末尾的分号是一种常见错误。在大括号之后放置一个分号可能很奇怪,但你会习惯的。

定义了新的结构体之后,就可以使用该类型创建变量了:

Point blank; 
blank.x = 3.0; 
blank.y = 4.0;

第一行是常见的变量声明:blank是Point类型。接下来的两行初始化结构体的实例变量。 这里使用的点记号与对象上调用函数的语法类似,如fruit.length()中的用法。当然,不同的是,函数名后面总是跟着一个参数列表,即使列表为空。

赋值的结果可以用下面的状态图表示: enter image description here

照例,变量名blank在框外,而变量的值在框内。这里,这个值是一个复合对象,它由两个有名字的实例变量构成。

C++ 复合值
C++ 访问实例变量
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }