对象数组、对象指针

C++对象数组对象指针的用法【C++初学面向对象编程】 C++类与对象的学习当中,有一个用来装同一个类对象数组对象数组,有一个指向对象对象成员的指针即对象指针,本文重点分析的就是对象指针对象数组的各种用法及注意事项。类和对象C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言。 阅读详情

今天老弟问了我一道题,是关于对象指针和对象数组的题目,当时竟然有点懵逼,一下子竟不知道这是些什么意思,然后百度查了查资料,现总结如下:

对象数组

顾名思义,对象数组跟数组类似,我们把型于Student s[]={Student("peter",18),Student("Suum",19)};叫做对象数组,切结后面不要忘了
看个例子:

class Date
{
public:
	Date(int year,int month,int day)
		:_year(year)
		,_month(month)
		,_day(day)
	{}
	void Display()
	{
		cout << _year << ":" << _month << ":" << _day << endl;
	}
private:
	int _year;
	int _month;
	int _day;
};
int main()
{
	Date d1(2019, 1, 1);
	Date d2[] = { Date(2018,12,12),Date(2018,10,1) };   //注意这里的分号

	d1.Display();

	d2->Display();   //打印对象数组里面各个对象
	(d2 + 1)->Display();
	return 0;
}

对象指针

对象指针就是:指向类的成员的指针。在C++中,可以说明指向类的数据成员和成员函数的指针。
指向数据成员的指针格式如下:
<类型说明符><类名>:: * <指针名>
指向成员函数的指针格式如下:
<类型说明符>(<类名>:: * <指针名>)(<参数表>)
举个栗子:

class Time
{
public:
	  void get_time()
	  {
	  		cout<< hour<<":"<<minute<<":"<<sec<<endl;
	  }
private:
    int hour;
    int minute;
    int sec;
};

int main()
{
	//由于类不是运行时存在的对象。因此,在使用这类指针时,
	//需要首先指定Time类的一个对象,然后,通过对象来引用指针所指向的成员。
    Time *pt;
    Time t1;
    pt = &t1;       ///pt就是指向Time类对象的指针变量
	//运算符 . 是用来对指向类成员的指针来操作该类的对象的。
	//如果使用指向对象的指针来对指向类成员的指针进行操作时,使用运算符->
    (*pt).hour;
    pt->hour;
}

指向对象成员的指针
(1.)指向对象数据成员的指针

int *p;
p = &t1.hour;
cout << *p << endl;    //输出t.hour的值

(2)指向对象成员函数的指针

void(Time::*p2)();//定义p2为指向Time类公用成员的指针变量
p2 = &Time::get_time

最后以一个题终结这篇博客:
题目描述: 建立一个对象数组。内存放10个学生数据(学号、姓名和成绩) .用对象指针指向数组首地址。输出第1.3.5个 学生的数据。
代码如下:

class Student
{
public:
	Student(string name="petter", long long id = 123456789,int score = 88)
		:_name(name)
		,_id(id)
		,_score(score)
	{}
	void Display()
	{
		cout << _name << "," << _id << " , " << _score << endl;
	}
private:
	string _name;
	long long _id;
	int _score;
};

int main()
{
	Student s[10] = {
		Student("s1",16407050521,87),
		Student("s2",16407050522,90),
		Student("s3",16407050523,80),
		Student("s4",16407050524,97),
		Student("s5",16407050525,93),
		Student("s6",16407050526,93),
		Student("s7",16407050527,93),
		Student("s8",16407050528,93),
		Student("s9",16407050529,93),
		Student("s10",16407050530,93),
	};
	Student* pt = s;  //对象指针
	
	pt->Display();
	
	(pt + 2)->Display();
	(pt + 4)->Display();
	return 0;
}
C++对象数组对象指针 对象数组指的是存储相同类型对象数组。定义对象数组的方式和定义基本数据类型数组类似,不过需要确保类具有合适的构造函数。public:// 默认构造函数// 带参数的构造函数// 定义一个包含3个Point对象数组,使用默认构造函数初始化// 定义一个包含2个Point对象数组,使用带参数的构造函数初始化return 0;对象指针是指向对象的指针变量。定义对象指针的方式和定义基本数据类型指针类似。 阅读详情

相关推荐

C++对象数组

C++中的对象数组C++中,数组的元素不仅可以是基本数据类型,也可以是自定义类型。其中就有今天要介绍的——对象数组对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。因此,和基本类型数组相比,对象数组有一些特殊之处,声明一个一维对象数组的语句形式是: 类名 数组名[常量表达式]; 与基本类型数组一样,在使用对象数组时也只能引用单个数组元素。每个数组元素都是一个对象,通过这个对象,便...

江南赴艽野的博客 1932

指向对象的指针数组

例题 对象 #include <iostream> using namespace std; //必备 class Rectangle { private: //私有的 double width; double height; static int count; public: //共有的 ~Recta.

m0_62953927的博客 739

C++基础学习(5)——对象数组对象指针

文章目录五、对象数组对象指针1. 对象数组的定义和使用2. 指向对象的指针3. 类成员指针数据成员指针成员函数指针使用类成员指针4. this指针 五、对象数组对象指针 1. 对象数组的定义和使用 将具有相同类类型的对象有序的集合在一起构成了对象数组,以一维对象数组为例,定义形式为: Point points[100]; //类名 对象数组名[常量表达式]; 说明: 在建立对象数组的时候需要调用构造函数,有多少个对象就要调用多少次构造函数 如果对象数组所属类有带参数的构造函数,可用初

qq_41985514的博客 1232

对象指针数组的理解以及指针与对象的存储位置的理解

今天在研究infomap的源码的是否,发现里面定义了个Node的指针数组: Node **node = new Node*[Nnode]; for(i=0;i<Nnode;i++){ node[i]=new Node(i); degree[i]=0.0; } 对于Node **node = new Node*[Nnode],这一句比较好理解,就是在内存中申请了一片空间用...

jinking01的专栏 2878

第八讲:对象数组与指针

<br />第八讲:对象数组与指针<br />本讲基本要求<br />    * 掌握:对象数组对象指针的定义及引用。<br />    * 理解:this指针的使用;对象数组的定义、使用方法;指向对象成员的指针。<br />    * 了解:构造函数有多个参数对象数组和构造函数有单个参数对象数组的实参的传递方式。<br />重点、难点<br />    * 对象数组对象指针的定义及引用。<br />一、对象数组<br />   数组不仅可以由简单变量组成(例如整型数组的每一个元素都是整型变量),也可以

FG2006的专栏 1696

对象指针数组

创建对象的指针数组 一开始想太复杂,好几次遇到都不知道怎么下手 ...//这是从xx题中选取的片段 class Shape{//这是一个抽象基类 ... }; ... int main() { int t; cin>>t; while(t--){ Shape *s[3];//要求创建对象的指针数组,可以这样创建 ... ...

在所不辞的博客 6081

C++对象数组&对象指针&对象指针数组

函数返回类型名 (类名∷*函数指针变量名)(参数表列);

pl0020的博客 761

C++对象数组对象指针

1.对象数组 是指每一个数组元素都是对象数组,也就是说,若一个类有若干个对象,我们把一系列的对象用一个数组来存放。对象数组的元素是对象,不仅具有数据成员,而且还有函数成员。 格式: 类名 数组名[下标表达式] 在建立数组时,同样要调用构造函数。有几个数组元素就要调用几次构造函数。 (1)当只需要一个参数时,在定义对象数组时可以直接在等号后面的花括号内提供实参;当需要多个参数时,只能对一个构造函...

qq_42849332的博客 3618

对象数组对象指针的知识总结

对象数组: 所谓对象数组是指每一个数组元素都是对象数组吗,也就是说,若一个类有若干个对象, 我们把这一系列的对象用一个数组存放。对象数组的元素是对象。不仅具有数据成员,而且还有函数成员。 定义一个一维数组的格式如下: 类名 数组名 [下标表达式] 在建立数组时,同样要调用构造函数,有几个数组元素就要调用几次构造函数。列如有10个数组元素,就要调用10次构造函数。 例...

weixin_43223908的博客 852

对象数组对象指针

一.对象数组 1.对象数组数组中的每一个元素都是类的对象。 2.声明一个一维对象数组的一般形式: 类名 数组名[常量表达式]; 3.引用对象数组元素的公有成员: 数组名[下标].成员名; 对象数组的初始化 4.调用构造函数对每个元素初始化 如: Box a[3]={Box(10,12,15),Box(15,16,17),Box(16,20,26)}; 二.对象数组的应用 #include ...

qq_45838321的博客 415

C++学习(四) 对象数组对象指针

1、对象数组 一维数组格式: 类名 数组名[下标表达式]; 例:有五个学生的分数需要描述,定义score数组,每一个数组元素都是score类的一个对象。 score rec[5]; //定义类score的对象数组rec,含有5对象数组对象。 ——在建立数组时,同样要调用构造函数。有几个数组元素就要调用几次构造函数。 2、定义数组 ——只有一个参数 score s1[4]={100,99,98,97}; 先后四次调用带一个参数的构造函数,分别初始化是s1[0]、s1[1]、s[2]、s1[3]。 ——多个参

qq_45700814的博客 1241

C++对象指针数组

1.指向数组的指针 #include<iostream> using namespace std; class M{ public: M(){ a=b=0; } M(int i,int j){ a=i;b=j; } void print(){ cout<<a<<","<<b<<"\t"; } private: int a,b; }; int main(){ M m[2][4]; int x=10

lyp 2150

C++对象数组对象指针

一、对象数组:每一个数组元素都是对象数组。 示例: #include const int N=100; using namespace std; class Date { private: int year,month,day; public: Date(); Date(int y,int m,int d); void show();

2039

对象数组对象指针

对象数组数组中的每一个元素都是类的对象。 声明一个一维对象数组的一般形式 类名 数组名[常量表达式]; 引用对象数组元素的公有成员 数组名[下标].成员名; 对象数组的初始化 调用构造函数对每个元素初始化 如: Box a[3]={Box(10,12,15),Box(15,16,17),Box(16,20,26)}; 对象数组的使用 #include <iostream> using namespace std; class Box { private: int height;

qq_45913329的博客 200

C++对象指针数组与堆中对象数组

#include using namespace std; /*堆中对象数组对象指针数组*/ class stu { public: void set(int x){i = x + 6;} int get(){return i*i;}; private: int i; }; void main() { const int n = 1000; stu * p = new stu[n];

九月飞雪的博客 4828

【Linux基础】对象数组对象指针

对象数组 对象数组数组中的每一个元素都是类的对象。 声明一个一维对象数组的语法形式: 类名 数组名[常量表达式]; 引用对象数组元素的公有成员: 数组名[下标].成员名; 对象数组的初始化:调用构造函数对每个元素初始化 如: CStudent s[3] = { CStudent(10001, "AAAAAA" ), CStudent(10002, "BBBBBB" ),

u010926630的专栏 577

对象数组对象指针,常对象对象的常引用

<br />转自 http://blog.163.com/zhoumhan_0351/blog/static/3995422720100253550307/<br />1、对象数组<br />Student stud[50]; //假设已声明了Student类,定义stud数组,有50个元素<br />在建立数组时,同样要调用构造函数。如果有50个元素,需要调用50次构造函数。在定义对象数组时应当怎样实现初始化呢?在花括号中分别写出构造函数并指定实参。如果构造函数有3个参数,分别代表学号、年龄、成绩。则可以

Thomas chen的专栏 1730
上一篇: Linux之进程状态
下一篇: 进程创建、等待和终止
qq_39412582
博客等级 码龄9年 217粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值