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++知识库]对象数组与对象指针

一、对象数组

将具有相同类类型的对象有序地集合在一起便构成了对象数组

一维对象数组定义形式:

类名 对象数组名[常量表达式];

如: student stu1[10];

对象数组使用说明:

1)在建立对象数组时,需要调用构造函数。如果对象数组有10个元素,就需要调用10次构造函数。

2)如果构造函数只有一个参数,在定义数组时可以直接在初值列表中提供实参
如:student stu1[3] = {67,75,89 };

3)如果构造函数有多个参数,则不能在定义数组时直接提供所有实参,应分别写出构造函数名并在括号内指定实参,分别调用构造函数,对每个元素初始化。

如:student stu1[3]={student(20060101,”张三”, 67),student(20060102,”李四,75),student(20060101,”王五”,75) };

二、对象指针

????????C++的指针被分成数据指针函数指针数据成员指针成员函数指针四种,而且不能随便相互转换。其中前两种是C语言的,称为普通指针;后两种是C++专门为类扩展的,称为成员指针。成员指针与类的类型和成员的类型相关,它只应用于类的非静态成员。由于静态类成员不是任何对象的组成部分,所以静态成员指针可用普通指针。

1>指向对象的指针

????????在建立对象时,编译系统会为每一个对象分配一定的存储空间,以存放其成员。对象内存单元的起始地址就是对象的指针。
可以定义一个指针变量,用来存放对象的地址,这就是指向对象的指针变量。
指向类对象的指针变量定义形式:

类名*对象指针变量名;

如: student stu;
? ? ? student *p = &stu;

可以通过对象指针访问对象和对象的成员。

如: student stu;?
? ? ?student *p = &stu;
? ? ?p -> num ;? 或 (*p). num;
? ? ?p -> display(); 或 (*p). display( );

2>指向对象成员的指针

对象的成员要占用存储空间,因此也有地址,可以定义指向对象成员的指针变量。

1.指向对象数据成员的指针变量定义形式:
数据成员类型 *指针变量名;

如: student stu;
? ? ? int *p = &stu .?num;
2.指向对象成员函数的指针

定义成员函数的指针时,必须确保与它所指函数的类型相匹配:
1)函数形参的类型和数目。

2)返回类型。

3)所属类的类型。
指向对象成员函数的指针变量定义形式:
数据类型(类名:*指针变量名)(参数列表);

如: void ( student :: *p)();
? ? ?p= &student :: display;

3>指向当前对象的this指针

当不同对象的成员函数引用数据成员时,怎么保证引用的是所指定的成员呢?
在每一个成员函数中都包含了一个特殊的指针,这个指针的名字是固定的,称为this指针,它是指向本类对象的指针,它的值是当前被调用的成员函数所在对象的起始地址。
this指针是一种隐含指针,隐含于每个类的成员函数中,即调用某成员函数时,都将自动产生一个this指针,它是作为参数被传递给成员函数的
?

#include<iostream>
using namespace std;

class Student
{
private:
	int num;
	string name;
	float score;
public:
	Student()
	{
		num = 2020;
		name = "zhangsan";
		score = 85;
	}
void Print()
{
	cout << "num:" << this->num << endl;
	cout << "name:" << (*this).name << endl;
	cout << "score:" << score << endl;
}
};
int main()
{
	Student stu1;
	stu1.Print();
	return 0;
}


?

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:14:26  更:2022-03-12 17:16:14 
 
开发: 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年11日历 -2024/11/24 4:45:48-

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