【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
************************************************************************
*/

#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
************************************************************************
*/

#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
************************************************************************
*/

#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

********************************************

#C/C++##c++#
C++学习 文章被收录于专栏

c++面向对象程序设计课, 作业题选自谭浩强的《c++面向对象程序设计》(第2版)

全部评论
学习用指针指向数组首元素
点赞 回复 分享
发布于 2022-08-28 13:46 河南

相关推荐

不愿透露姓名的神秘牛友
04-22 13:08
Data_Seven:真不知道这些企业哪来的成就感
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务