ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

【c++】c语言入门到c++使用高手:深入学习C++之基本语言(五)

【c++】c语言入门到c++使用高手:深入学习C++之基本语言(五)

第二章 基本语言

第五节 结构、权限修饰符、类简介

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++中结构和类极其相似,区别有两点:

  1. c++结构内部的成员变量以及成员函数默认的访问级别都是public属性,
    c++类内部的成员变量以及成员函数默认的访问级别是private

  2. c++结构体继承默认的是public,c++类的继承默认的都是private

  • 额外说明:
  1. 标准c++库中包含大量丰富的类和函数, string, vector

4. 类的组织

  • 书写规范:类的定义代码放在头文件中, 头文件可以和类名相同,类的具体实现代码放在.cpp文件中,实现的文件名也可以是类名,.cpp文件中需要包含类名的.h文件
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进