第二章 基本语言
第五节 结构、权限修饰符、类简介
1. 结构回顾
- 结构,自定义的数据类型
#include<iostream>#include<cstring>using namespace std;typedefstructstudent{intnumber;charname[100];}student;//形参用结构变量voidfunc(student tmpstu){tmpstu.number=2000;strcpy(tmpstu.name,"Who");}voidfunc1(student&tmpstu){tmpstu.number=2000;strcpy(tmpstu.name,"Who");}//用指向结构体的指针作为函数传递voidfunc2(student*tmpstu){tmpstu->number=3000;strcpy(tmpstu->name,"WhoWho");}intmain(){student stu1;strcpy(stu1.name,"Felaim");stu1.number=1001;cout<<stu1.name<<endl;cout<<stu1.number<<endl;// 值并没有发生变化// 效率很低,整个结构体都被进行拷贝func(stu1);cout<<stu1.name<<endl;cout<<stu1.number<<endl;func1(stu1);cout<<stu1.name<<endl;cout<<stu1.number<<endl;student*pstu;func2(pstu);cout<<pstu->name<<endl;cout<<pstu->number<<endl;return0;}c++和c语言中的结构有什么区别?
- c++中结构具备了c语言结构的所有功能外,还增加了很多扩展功能,最突出的扩展功能是:
不仅仅有成员变量,还可以定义成员函数(方法)
#include<iostream>#include<cstring>using namespace std;typedefstructstudent{intnumber;charname[100];//成员函数也叫方法voidfunc(){number++;}}student;//形参用结构变量voidfunc(student tmpstu){tmpstu.number=2000;strcpy(tmpstu.name,"Who");}intmain(){student stu1;strcpy(stu1.name,"Felaim");stu1.number=1001;cout<<stu1.name<<endl;cout<<stu1.number<<endl;// 值并没有发生变化// 效率很低,整个结构体都被进行拷贝func(stu1);cout<<stu1.name<<endl;cout<<stu1.number<<endl;stu1.func();cout<<stu1.number<<endl;return0;}2. public和private权限修饰符
public(公有), private(私有), protect(保护),本节介绍前两种
public:公共的意思,用这个修饰符修饰结构/类中的成员变量或成员函数,就可以被外界访问,一般我们需要被外界访问的东西,就定义为public
private: 私有的意思,用这个修饰符修饰结构/类中的成员变量或成员函数,只有内部定义的成员函数才能使用
#include<iostream>#include<cstring>using namespace std;typedefstructstudent{public://结构成员缺省都有public属性private:intnumber;charname[100];public://成员函数可以调用私有成员变量numbervoidfunc(){number=100;cout<<number<<endl;}}student;intmain(){student stu1;// 如果定义成private之后,就无法调用strcpy(stu1.name,"Felaim");stu1.number=1001;cout<<stu1.name<<endl;cout<<stu1.number<<endl;return0;}3. 类简介
类也是用户自定义的数据类型
不管是c还是c++,结构都使用struct定义
结构和类到底有什么区别?
类只有在c++中才有的概念
结构使用struct来定义,类用class中定义,在c中定义一个属于该结构的变量,我们称为结构变量
在c++中,我们定义一个属于该类的变量,我们称为对象说白了结构变量也好,对象也好,它们都是一块能够存储数据并且具有某种类型的内存空间
c++中结构和类极其相似,区别有两点:
c++结构内部的成员变量以及成员函数默认的访问级别都是public属性,
c++类内部的成员变量以及成员函数默认的访问级别是privatec++结构体继承默认的是public,c++类的继承默认的都是private
- 额外说明:
- 标准c++库中包含大量丰富的类和函数, string, vector
4. 类的组织
- 书写规范:类的定义代码放在头文件中, 头文件可以和类名相同,类的具体实现代码放在.cpp文件中,实现的文件名也可以是类名,.cpp文件中需要包含类名的.h文件