提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
提示:这里可以添加本文要记录的大概内容:
用最好的武器,打最强的怪:)
提示:以下是本篇文章正文内容,下面案例可供参考
一、从面向过程到面向对象
c语言时面向过程的,一步步分析,建立对应函数解决相关问题。
而c++时面向对象的,将一件事拆成不同对象,根据对象的交互来解决问题。
就比如洗衣服时,我们只需要关注,衣服,洗衣机,洗衣液,人之间是如何交互完成洗衣服这一项工作,而不需要去关注洗衣机如何工作这一类问题。
二、类的引入
类的本质就是一个包装。在c语言中,我们用结构体来包装链表内的元素,在c++中,不仅可以包装变量,还可以把函数攘括在内
class func
{
int _a;
int _b;
int Init()
{
_a = 1;
_b = 2;
}
};
如代码所见,在c++中我们更喜欢用class来代替struct。
三、类的定义
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
类体内,成员变量也叫作属性,成员函数也叫作方法。
类的两种定义方式
1、声明和定义全部放在类体内,这种情况编译器可能会将成员函数当成内联函数。
2、声明放在类体内,成员函数定义放在.cpp中。
注:成员函数定义时呀加上类的命名空间的修饰
四、类的访问限定符
类的访问限定符有三种public,private,protected.根据字面意思就可以知道这些符的限定范围了,下面讲一些使用规范
1、类中定义的限定符的作用域是从这个限定符出现,直到类定义结束,或者到下一个限定符出现。
2、class的默认访问权限是private,struct默认访问权限是public。
五、类的封装
c++中,通过类将数据以及操作数据的方法进行有机结合,通过访问权限来
隐藏对象内部实现细节,控制哪些方法可以在类外部直接被使用。
举一个例子,在栈里面,我们会用到取栈顶元素,在c中可以直接取st[top],但不同的算法中top的值会不同,导致了对象使用不规范,但在封装后,无法直接使用st[top]来取元素。只能通过我的开放函数Top(&st)来取。
六、类的实例化
用类来创建对象,就叫做类的实例化
我们定义一个类后,知识相当于思考出了一个模型,并没有实际的内存空间来存储它,就像建房子的图纸一样,只有用图纸实例化出对象后,才有了真正的内存空间
七、类的对象模型
计算类的大小
一个类可以定义多个不同的对象,但这些对象在使用类中函数时,函数是相同的,那么如果把每一个对象中都存一个这样的函数,就太浪费空间了。
有大佬提出解决方案,对象中只存放变量的内存,函数放在公共代码区,在使用的时候取访问
所以一个类的大小,其实就是其内成员变量的大小(注意内存对齐),在空类中,编译器会给一个字节的空间来标识这个类是存在的
八、this指针
1、this指针的指出
#include<iostream>
using namespace std;
class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}
void Print()
{
cout << _year << "-" << _month << "-" << _day << endl;
}
private:
int _year; // 年
int _month;// 月
int _day; // 日
};
int main()
{
Date d1, d2;
d1.Init(2022, 1, 11);
d2.Init(2022, 1, 12);
d1.Print();
d2.Print();
return 0;
}
定义了两个对象d1,d2,在调用初始化函数时,明明调用的是同一个函数,为何会初始化不同的结果呢?C++利用了this指针解决了这个问题,C++编译器给每一个“非静态的成员函数”都增加了一个隐藏的指针参数,在函数体内对成员函数的操作,都是通过该指针去完成的。
注:this指针是形参,存放在栈帧里且this指针可以为空
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。