类和对象(C++学习笔记 16)

本文详细介绍了C++中的类和对象,从结构体出发,探讨了类的声明、对象的定义、成员访问以及类的作用域和访问属性。类作为一种抽象数据类型,提供封装和数据隐藏,其成员默认为私有,而结构体成员默认为公共。通过结构体的扩充引出类的概念,强调了类与对象的关系以及成员函数的定义方式。
摘要由CSDN通过智能技术生成
  • 类(class)是一种数据类型,是一种用户定义的抽象的数据类型。
  • 类是一种抽象的数据类型,它不占存储空间,不能容纳具体的数据,因此在类声明中不能给数据成员赋初值。
  • 类代表了一批对象的共性和特征。
  • 类是进行封装和数据隐藏的工具,它将数据与操作紧密地结合起来。
  • 类是对象的抽象,对象是类的实例。
  • C++保留C结构体这种数据类型,并对其功能进行了扩充,使结构体可以含有不同类型的数据,而且还可以含有函数。类与结构体的扩充形式非常相似。
  • 类与结构体区别:在结构体中,如果对成员不作private 或public声明,系统将其默认为公有的( public ),外界可以任意的访问其中的数据成员和成员函数,它不具有信息隐蔽的特性;而在类的声明中,如果对其成员不作private 或public声明,系统将其默认为私有的( private ),外界不可以访问其中的数据成员和成员函数,它提供了默认的安全性。
  • 一般来说,公有成员是类的对外接口,而私有成员是类的内部数据和内部实现,不希望外界访问。
一、结构体

结构体--------统一操作一个整体对象。

结构体类型的定义形式:
struct [结构体类型名]
{
  数据类型 成员1;
  数据类型 成员2;
  ···
  数据类型 成员n;
};

说明:
(1) 在需要该结构体变量的地方,用“ struct 结构名 变量名 ”进行变量定义。若省略结构名,则只能在类型定义的同时定义结构体变量,在程序的其他地方无法使用该结构体定义变量。

结构体变量的定义:

1)先定义结构体类型,再定义结构体类型变量。

struct stu_rec{
   
	char cno[8];  //学号
	char cname[10];  //学生姓名
	char csex;   //性别
	int iscore[4];   //四科考试成绩
};
struct stu_rec student1,student2;   //定义结构体类型变量

通常,这样的结构体类型定义放在函数的外部,程序的开始部分或头文件中,变量的定义在函数中。

2)定义结构体类型的同时定义结构体类型变量。

struct date{
   
	int iyear;
	int imonth;
	int iday;
}mydate1,mydate2;

在这种方式下,结构体类型定义通常在函数的外部,程序的开始部分。其后也可以使用1)的方式再定义其他结构体变量。

3)直接定义结构体类型变量。

struct
{
   
	char cno[8];
	char cname[10];
	char csex;
	float fb_salary,ff_salary,fp_salary;   //基本工资、浮动工资、奖金
}person1,person2;

这种方式灵活性差,一般不用。

(2) 结构体类型中的成员类型可以是基本数据类型,也可以是其他数据类型。同一类型的成员可以在同一行定义,形式为:数据类型 成员名1,成员名2······

(3) 存储一串字符应将其定义为字符数组

(4) 结构体变量的成员引用
使用成员运算符“ . ”,引用的形式为:
<结构体类型变量名> . <成员名>

(5) 结构体类型变量的初始化
由于结构体类型变量可以汇集不同数据类型的成员,所以结构体类型变量的初始化必须在结构体类型变量的定义时进行。
例如: struct stu_info student = { “23333”, “xiao ming”, “f”, “20”,“computer science”}

(6) 指向结构体的指针
结构体变量所占内存单元的起始地址就是该变量的指针。
可以定义一个指针变量来指向该结构体变量,并通过该指针变量来引用结构体变量成员。
1)结构体指针的定义
struct  结构体类型名 *指针变量名
例1:

struct stu_info *q;    //q为指针变量,指向结构体类型stu_info

例2:

struct stu_cj
{
   
	char cno[8];
	char cname[10];
	float fscore[4];
}stud,*</
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值