【C++】类和对象——(上)
class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或员变量;类中的函数称为类的方法或者成员函数。代码语言:javascriptAI代码解释struct A//定义各种变量或指针int* arr;int b;//在结构体中嵌套定义结构体struct A B;
前言:结束了C++入门的学习紧接着就步入到了C++类和对象的学习,类和对象比C++入门更具有挑战性,类和对象相比C语言就像是进入了一个完全不同的世界,让我们一起探索一下c++类和对象的奥妙。
一,类
1.1类的概念
C++ 中的类(Class)是一种用户自定义的数据类型,用于封装数据(成员变量)和操作数据的方法(成员函数)。类是面向对象编程(OOP)的核心,支持封装、继承和多态等特性。
1.2类的定义
- class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或员变量; 类中的函数称为类的方法或者成员函数。
类的定义与C语言的结构体的定义类似,我们先来看看C语言结构体的定义:
代码语言:javascript
AI代码解释
struct A
{
//定义各种变量或指针
int* arr;
int b;
//在结构体中嵌套定义结构体
struct A B;
};
下面我们来看看类的定义,这里举一个之前数据结构的例子:
代码语言:javascript
AI代码解释
class stack
{
//成员函数
public:
void Init(int n=4)
{
arr=(int*)malloc(sizeof(int)*n);
if(arr==nullptr)
{
perror("malloc申请空间失败");
return;
}
capacity = n;
top = 0;
}
void push_back(int x)
{
st.arr[_size++]=x;
}
private:
//成员变量 习惯以下划线_ 开头用于区分类里的变量与成员函数的形参
int* arr;
int _size;
int _capacity;
};
这就是C++定义的一个数据结构栈的类,观察他和上面结构体的区别:
类以class定义,结构体以struct定义;类的内部有成员变量,成员函数,还可以嵌套定义类。而C语言的结构体内部只能定义变量。类还多出了
publich和private这样的访问限定符这个后面会介绍。 注意:类里的成员变量一般以下划线_开头,在赋值等操作的时候用于区成员变量与成员函数的形参同名的情况!
所以从本质上来说类就是C++对C语言的结构体进行了一个升级,所以如果在C++中定义了一个结构体那么它将被默认的升级成为类!比如:
代码语言:javascript
AI代码解释
// C++兼容C中struct的⽤法
//在C语言中我们的链表是这样定义的
typedef struct ListNode
{
struct ListNode* next;
//这里指针的类型可以不用sturct 因为struct被升级成为了类 类名就是类型
//ListNode*next;
int val;
}LTNode;
注意C++是兼容C语言的用法的,但是在C++中定义了结构体后它就会被升级成为类。那么在使用结构体的时候就不用在加
struct这个关键字了,因为struct升级成了类,类名就是类型!
注意定义在类里面的函数默认为内联函数,也就是类里面的函数默认是展开的
更多推荐



所有评论(0)