【C++之对象数组和对象指针1】输出第1,3,5个学生的数据

简介: 【C++之对象数组和对象指针1】输出第1,3,5个学生的数据

题目要求


建立一个对象数组,内放5个学生的数据(学号、成绩),用指针指向数组首元素,输出第1,3,5个学生的数据。


——谭浩强的《C++面向对象程序设计》第3章习题第4小题


对象数组


在一个对象数组中各个元素都是同类对象。

本题中,要求存放的学生数据均包含学号和成绩,因此可以建立一个数组,包含5个元素,代表5个学生,每个学生具有学号和成绩的属性。


在建立数组时,同时要调用构造函数。如果构造函数有多个参数,在定义对象数组时,需要在花括号中分别写出构造函数名并在括号内指定实参,以实现对象数组初始化。


定义对象数组并初始化的格式为:


Student stu[n]={
student(实参0-1,实参0-2,实参0-3),
… …
student(实参n-1,实参n-2,实参n-3)
};


对象指针


本题中,需要用指针指向数组首元素,也就是用指针指向对象的起始地址。


首先需要定义一个类对象:


类名 对象名;


然后定义一个指针变量,用来指向该类对象。

定义对象的指针变量的格式:


类名 * 指针变量名;


最后用取址运算 (&) 来获取对象的起始地址:


指针变量名 = &对象名;


后两步可以简化为:


类名 * 指针变量名 = 对象名;


程序


student.h


/*
************************************************************************
@file:    student.h
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include <iostream>
using namespace std;
class Student // 声明类类型
{
private: // 声明私有部分
  int num;   // 学号
  int score;       // 成绩
public: // 声明公用部分
  Student(int n, int s) : num(n), score(s) {}; // 定义带参数的构造函数,并用参数的初始化表对数据成员初始化
  void display(); // 输出学生的学号和成绩数据
};


student.cpp


/*
************************************************************************
@file:    student.cpp
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include"student.h"
// 类外定义成员函数
void Student::display() // 成员函数定义,返回长方柱的体积
{
  cout << "num:" << num << endl;
  cout << "score:" << score << endl;
}


main.cpp


/*
************************************************************************
@file:    main.cpp
@date:   2020.11.6
@author: Xiaoxiao
@blog:    https://blog.csdn.net/weixin_43470383/article/details/109445470
************************************************************************
*/
#include "student.h"
int main()
{
  Student stu[5] = {
  Student(8, 100),
  Student(9, 100),
  Student(10, 100),
  Student(11, 100),
  Student(12, 100)
  };
  // 定义对象数组
  Student *p; // 定义p为指向Student类对象的指针变量
  p = stu;    // 将stu的起始地址赋给p
  // 或:Student *p = stu;
  for (int i = 0; i <= 2 ;i ++)
  {
  p -> display(); // 调用p所指向的对象中的display函数,即stu.display
  p = p + 2; // 间隔一个学生,取数据
  }
  system("pause");
  return 0;
}


运行结果



输出:

num:8

score:100

num:10

score:100

num:12

score:100


相关文章
|
4天前
|
C++
C++一分钟之-类与对象初步
【6月更文挑战第20天】C++的类是对象的蓝图,封装数据和操作。对象是类的实例。关注访问权限、构造析构函数的使用,以及内存管理(深拷贝VS浅拷贝)。示例展示了如何创建和使用`Point`类对象。通过实践和理解原理,掌握面向对象编程基础。
32 2
C++一分钟之-类与对象初步
|
1天前
|
C++
C++语言如何利用函数来处理数组
C++语言如何利用函数来处理数组
|
1天前
|
数据安全/隐私保护 C++
C++语言深入理解类的封装与数据隐藏
深入理解类的封装与数据隐藏
|
1天前
|
存储 安全 算法
C++的内置数组和STL array、STL vector
C++的内置数组和STL array、STL vector
|
1天前
|
C++
C++函数的返回数据写法的思路
C++函数使用尾置返回类型、decltype、类型别名返回一个数组引用
|
5天前
|
存储 算法 安全
C++一分钟之-数组与指针基础
【6月更文挑战第19天】在C++中,数组和指针是核心概念,数组是连续内存存储相同类型的数据,而指针是存储内存地址的变量。数组名等同于指向其首元素的常量指针。常见问题包括数组越界、尝试改变固定大小数组、不正确的指针算术以及忘记释放动态内存。使用动态分配和智能指针可避免这些问题。示例代码展示了安全访问和管理内存的方法,强调了实践的重要性。
23 3
|
9天前
|
算法 Java 程序员
面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性
【6月更文挑战第15天】面向对象编程(OOP)通过对象组合构建软件,C语言虽是过程式语言,但可通过结构体、函数指针模拟OOP特性。封装可使用结构体封装数据和方法,如模拟矩形对象。继承则通过结构体嵌套实现静态继承。多态可通过函数指针模拟,但C不支持虚函数表,实现复杂。C语言能体现OOP思想,但不如C++、Java等语言原生支持。
27 7
|
5天前
|
小程序 数据处理
指针\批量数据的筛查
指针\批量数据的筛查
8 2
|
7天前
|
数据安全/隐私保护 C++
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
C++ 中的类是一种用户定义的数据类型,用于表示具有相似特征和行为的对象的模板。
|
10天前
|
编译器 C++
【C++初阶】—— 类和对象 (下)
【C++初阶】—— 类和对象 (下)
12 2