IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C++】类与对象 | 对象数组与对象指针 -> 正文阅读

[C++知识库]【C++】类与对象 | 对象数组与对象指针

EX1

#include <iostream>
using namespace std;

class point
{
    int x;
    int y;
public:
    point():x(1),y(1){}
    point(int a, int b):x(a),y(b){}
    int getx(){return x;}
    int gety(){return y;}
};

int main()
{
    point* p[2] = {new point(1, 2), new point(3, 4)};
    
    point p1(3,3);
    point p2[3]={{2,2},{3,3},{4,4}};
    point p3[3];
    point* pt = &p1; //指向单个对象的指针
    point* pi = p3;  //指向对象数组的指针

    //访问 对象数组元素
    for (int i=0;i<2;i++)
    {
        cout<<"p["<<i<<"].x="<<p2[i].getx()<<"\t";
        cout<<"p["<<i<<"].y="<<p2[i].gety()<<endl;
    }
    
    //访问 指针对象 case1:pt->getx()
    cout<<"point pt -> x:"<<pt->getx()<<endl;
    //访问 指针对象 case2:(*pt).getx()
    cout<<"point (*pt).x:"<<(*pt).getx()<<endl;
}

EX2

#include "iostream"
using namespace std;

class A
{
    int i;
public:
    A(int k = 0)
    {
        i = k;
    }
    void display()
    {
        cout << "i=" << i << endl;
    }
};

int main()
{
    A *p = new A; //动态创建对象p
    
    p->display();
    delete p;      //删除对象p (清理内存,不是说删除了之后就要重新声明p变量)

	//A *p = new A(8); error 重新声明了
  
    p = new A(8);
    p->display();
    delete p;

    p = new A[3];  //p指向对象数组
    A *q = p;
    for (int i = 0; i < 3; i++)
    {
        (q++)->display(); //输出对象数组数据
    }
    delete[] p;  //删除对象数组指针p,别漏了[]
    return 0;
}

EX3

#include <iostream>
using namespace std;

class Student
{
    int num;
    float score;
public:
    Student(int n, float s) : num(n), score(s) {} //利用参数初始化表进行数据初始化
    void display();
};

void Student::display()
{
    cout << num << " " << score << endl;
}

int main()
{
    Student stud[5] = {
        Student(101, 78.5), Student(102, 85.5), Student(103, 98.5),
        Student(104, 100.0), Student(105, 95.5)}; //定义对象数组

    Student *p = stud; //定义对象指针指向对象数组
    for (int i=0;i<=2;p=p+2,i++)             //显示第1、3、5名学生信息
        p->display();
    return 0;
}

注意

  • 对象数组中的元素必须是同一个类的对象

  • 生成对象数组时,将针对每个数组元素按其下标的排列顺序依次调用一个构造函数。

  • 定义对象数组时可以直接初始化,也可以通过赋值语句进行赋值。

  • 对象数组在定义过程中进行元素初始化时调用有参构造函数;如果只定义而不进行初始化,则调用无参构造函数
    在这里插入图片描述
    没初始化,调用无参构造函数。

  • 对数组元素赋值时(用赋值语句),系统先调用有参构造函数创建无名对象,并将其值赋给响应对象数组元素,最后再调用析构函数将无名释放。

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-10-16 19:28:07  更:2021-10-16 19:29:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 19:11:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计