
高贵的衬衫
07-30 15:30
C++
C++
# 一、面向过程和面向对象初步认识
>C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

>C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。

# 二、类的引用
>**C语言结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。**
>==比如==:之前在数据结构初阶中,用C语言方式实现的栈,结构体中只能定义变量;现在**以C++方式实现,会发现struct中也可以定义函数**
```mermaid
flowchart LR
id1><font color=#FFF0</font>C语言版]
```
>结构体中只能定义变量,并且声明栈类型的变量时,必须写全struct Stack。
```c
typedef int DataType;
struct Stack
{
DataType* _array;
size_t _capacity;
size_t _size;
};
struct Stack s;//声明一个结构体变量
```
```mermaid
flowchart LR
id1><font color=#FFF0</font>C++版]
```
>C++中,struct结构体升级成了类,它里面不仅可定义变量,还可以定义函数,并且声明栈类型变量的时候,可以不加struct。声明的变量可以通过.去调用类里面的函数。
```cpp
#include<iostream>
using namespace std;
//C++兼容C语言,结构用法可以继续使用
//同时struct也升级成了类
struct Stack
{
//成员函数
void Init()
{
a = nullptr;
top = capacity = 0;
}
void Push(int x)
{
//...
}
//成员变量
int* a;
int top;
int capacity;
};
int main()
{
Stack st2;//C语言是不允许这样定义结构体但是C++可以
st2.Init();//调用类里面的函数
st2.Push(1);
st2.Push(2);
st2.Push(3);
st2.Push(4);
return 0;
}
```
# 三、类的定义
```cpp
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
```
>class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。
**类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数**。
```mermaid
flowchart TD
id1[\<font color=#FFD700</font>类的两种定义方式:\]
```
```mermaid
flowchart LR
id1><font color=#FFF0</font>1. 声明和定义全部放在类体中]
```
```cpp
//定义一个人的类
class Person
{
public:
//成员函数——显示基本信息
void showInfo()
{
cout << _name << "-" << _sex << "-" << _age << "-" << endl;
}
public:
//成员变量
char* _name;//姓名
char* _sex;//性别
int _age;//年龄
};
```
**==需注意==:成员函数如果在类中定义,编译器可能会将其当成==内联函数==(不会进入符号表,否则在.h中定义在其他文件中包含,包含了以后符号表中都有一份就冲突了)处理。**
```mermaid
flowchart LR
id1><font color=#FFF0</font>2. 类声明放在.h文件中,成员函数定义放在.cpp文件中]
```
```cpp
Person.h文件
//定义一个人的类
class Person
{
public:
//成员函数——显式基本信息
void showInfo();
public:
//成员变量
char* _name;//姓名
char* _sex;//性别
int _age;//年龄
};
```
```cpp
Person.cpp文件
#include "Person.h"
//显示基本信息,实现:输出名字、性别、年龄
void Person::showInfo()
{
cout << _name << "-" << _sex << "-" << _age << "-" << endl;
}
``
Comments0
Creator