C++对象数组与对象指针
(一)对象数组
将具有相同类类型的对象有序地集合在一起便构成了对象数组,以一维对象数组为例,其定义形式为:
类名 对象数组名[];
Point points[100];
关于对象数组的几点说明:
(1)在建立对象数组的时候需要调用构造函数。如果对象数组有100个元素,就需要调用100次构造函数。
(2)如果对象数组所属类有带参数的构造函数时,可用初始化列表按顺序调用构造函数,使用复制初始化来初始化每个数组元素。
Point A[3]={Point(0,0),Point(1,1),Point(2,2)}; //Point(int a=0,int b=0)
Point A[3]={Point(1),Point(2),Point(3)}; //Point(int a=0,int b=0)
(3)如果对象数组所属类有单个参数的构造函数时候,定义数组时可以直接在初值列表中提供实参。
Point A[3] ={1,2,3}; //Point(int a=0,int b=0)
等价与:
Point A[3]={Point(1),Point(2),Point(3)};
(4)如果对象数组在创建时没有初始化,则所属类要么有合成默认构造函数,要么定义无参数的构造函数或全部参数为默认参数的构造函数。
(5)对象数组的初始化形式本质上取决于所属类的构造函数,需要清晰初始化实参与构造函数形参的对应关系,避免出现歧义性。
(6)如果对象数组所属类含有析构函数,那么每当建立对象数组时,按照每个元素的排列顺序调用构造函数;每当撤销数组时,按照相反的顺序调用析构函数。
(二)对象指针
1)指向对象的指针
在建立对象时,编译器会为每一个对象分配一定的存储空间,以存放其成员。对象内存单元的起始位置地址就是对象的指针。可以定义一个指针变量,用来存放对象的指针。指向类对象的指针变量的定义形式为:
类名* 对象指针变量名=初值;
例子:
Point one(0,0),*p; //p为指向对象的指针变量
p=&one; //指向对象
2)类成员指针
成员对象要占用存储空间,因此也有地址。指向对象成员的指针变量,一般形式为:
数据成员类型* 指针变量名=初值;
注意,C++比C语言有着更加严格的静态类型,更加强调类型安全与编译时检查。因此,C++指针被分为数据指针,函数指针,数据成员指针,成员函数指针四种,而且不能随意转换。其中前两种是C语言的称为普通指针;后两种是C++专门为类扩展的,称为成员指针。
成员指针与类的类型和成员的类型相关,它只应用于类的非静态成员。由于静态成员不是任何对象的组成部分,所以静态成员指针可用普通指针。
a)数据成员指针
数据成员类型是 类名::*指针变量名=成员地址初值;
b)成员函数指针
定义成员函数指针时必须确保在三个方面与它所指函数的类型相匹配:
C++对象数组与对象指针的更多相关文章
- C++二维数组、指针、对象数组、对象指针
项目中用到,随手记一下: 1.二维数组.与指针 创建二维数组指针的方式: a.已知一维的大小 1 int **array=new int *[rows]; 2 (for int i=0;i<ro ...
- C++_对象数组与对象指针
对象数组与对象指针 1. 对象数组 所谓对象数组是指每一数组元素都是对象的数组, 也就是说,若一个类有若干个对象,则把这一系列的对象用一个数组来存放. 对象数组的元素是对象, 不仅具有数据成员,而且还 ...
- JavaSE基础知识(5)—面向对象(对象数组和对象关联)
一.对象数组 1.说明 数组的定义类型为对象类型 2.动态初始化 1.声明并开辟空间 Person[] pers = new Person[长度];2.赋值 for(int i=0;i<pers ...
- vue的v-for循环普通数组、对象数组、对象、数字
如下 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8& ...
- 对象数组和对象对象数组的for-each循环
对象数组的声明 类名称 对象数组名[] = null: 对象数组名 = new 类名称[长度] 定义并开辟数组 类名称 对象数据名[] = new 类名称[长度]; 在声明一个对象数组后,必须对每个数 ...
- json对象数组按对象属性排序
var array = [ {name: 'a', phone: 1, value: 'val_4'}, {name: 'b', phone: 5, value: 'val_3'}, {name: ' ...
- js 对象数组根据对象中的属性排序
function createComparisonFunction(propertyName){ return function(object1,object2){ var value1 = obje ...
- js实现的对象数组根据对象的键值进行排序代码
有时候会遇到做展示数组的排序,由大到小和由小到大的切换: var arr=[{id:1,webName:"蚂蚁部落"},{id:2,webName:"网易"}] ...
- js中json对象数组按对象属性排序---1
转载:https://www.cnblogs.com/jasonwang2y60/p/6656103.html 在实际工作经常会出现这样一个问题:后台返回一个数组中有i个json数据,需要我们根据js ...
随机推荐
- 聚类之高斯混合模型与EM算法
一.高斯混合模型概述 1.公式 高斯混合模型是指具有如下形式的概率分布模型: 其中,αk≥0,且∑αk=1,是每一个高斯分布的权重.Ø(y|θk)是第k个高斯分布的概率密度,被称为第k个分模型,参数为 ...
- 七十七、SAP中数据库操作之多表联合查询
一.我们看一下SFLIGHT表和SPFLI表,表结构如下 二.这2个表的数据如下 三.我们代码如下 四.多表联合查询结果如下
- C#中类的字段或属性不被序列化成JSON或XML
将一个类序列化成JSON或XML时,如果某个字段或属性不想被序列化,则可以使用以下Attribute: 1.[Newtonsoft.Json.JsonIgnore]特性:使用Newtonsoft.Js ...
- 联系我们地图坐标展示js
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=6d88 ...
- python基础(一)内置类型及方法
python 内置类型主要包含7大类: 数字 序列 映射 文件 类 实例 异常 其中,最常用数据类型为序列 序列 python中包含7种内建序列 列表(list):由方括号构成,用逗号分隔项目: [a ...
- spring 动态bean注册
1. import org.springframework.beans.MutablePropertyValues; import org.springframework.beans.factory. ...
- jQuery实现点击div外的区域,来隐藏指定节点
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script sr ...
- CGridCtrl 添加button (CGridCellButton类)
#ifndef __GRID_CELL_BUTTON__ #define __GRID_CELL_BUTTON__ #include "../GridCtrl_src/GridCell.h& ...
- 19 01 16 jquery 的 属性操作 循环 jquery 事件 和事件的绑定 解绑
jquery属性操作 1.html() 取出或设置html内容 // 取出html内容 var $htm = $('#div1').html(); // 设置html内容 $('#div1').htm ...
- Session简单介绍
Session 会话 , Session是基于Cookie的一种会话机制. Cookie是服务器返回一小份数据给客户端,并且存放在客户端上. Session是,数据存放在服务器端. 常用API //得 ...