【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

2024-02-27 1502阅读

温馨提示:这篇文章已超过448天没有更新,请注意相关的内容是否还可用!

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)


目录

一. 前言 

二. 面向对象与面向过程

        2.1 面向过程

        2.2 面向对象

三. 类的基础知识

3.1 类的引入

3.2 类的定义

3.3 成员变量的命名规则

3.4 封装

3.5 类的访问限定符

3.6 类的作用域

3.7 类的实例化

四. 类的对象模型

4.1 类对象的大小

4.2 类对象的存储方式

4.3 空类的大小

五. this指针

5.1 this指针的引出

5.2 this指针的特性

5.3 小试牛刀


一. 前言 

        前几期我们介绍了C++相比C语言新增的一些语法,相信大家已经对C++有了一定的认知。而从本期开始,我们将正式进入C++类和对象的学习,感受C++基于面向对象编程的魅力。在学习过程中,我们将接触到面向对象的三大特性之一:封装。

二. 面向对象与面向过程

        在学习编程的过程中,各位想必或多或少都听说过这两个概念。都知道C语言是面向过程的,C++、Jave等语言是面向对象的,那么,究竟什么是面向过程?而面向对象又是什么意思呢?

        2.1 面向过程

        C语言是面向过程的,关注的是实现的过程,分析出求解问题的步骤,通过函数调用逐步解决问题。

        就好像我们要洗衣服,从面向过程的角度来洗衣服的流程图就像下面所示【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

        又或者我们要设计一个外卖点餐系统,从面向过程的角度我们应该设计类似下面的流程:

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

总结:面向过程关注的是一个个步骤,例如放衣服、手搓以及用户下单等等,通过将这些具体的步骤一步步在函数中实现,使用时再依次进行调用即可。

        2.2 面向对象

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

        回到洗衣服,面向对象关注的就只有四个对象:人、衣服、洗衣粉和洗衣机。人只需将衣服和洗衣服放入洗衣机中即可。至于洗衣机是如何洗衣服、是如何甩干的,我们无需关心。【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

        而对于外卖点餐系统,我们关注的也不是分配骑手、骑手送餐这些具体的步骤,而是关注骑手、商家和用户这三个对象之间的交互,对用户如何下单、骑手如何送餐并不关心。【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

总结:面向过程关注的完成某件事的对象,例如衣服、洗衣机以及骑手等等。通过描叙这些对象在整件事中的关系和行为,最终得以解决问题。


三. 类的基础知识

3.1 类的引入

        在C++中,类是用来描述对象的,是一种用户自定义的数据类型。在C语言中,结构体就是种自定义类型,但其只能用来定义变量。而在C++中,结构体被升级成了类,其不仅可以定义成员变量,还可以定义成员函数。如下:

//实现一个栈类
typedef int DataType;
struct Stack
{
	void Init(size_t capacity)
	{
        //栈初始化
	}
	void Push(const DataType& data)
	{
		//栈的插入
	}
	DataType Top()
	{
		//取栈顶元素
	}
	void Destroy()
	{
        //栈空间销毁
	}
	DataType* _array;
	size_t _capacity;
	size_t _size;
};

        而在C++中,我们更喜欢用class关键字来替代struct【C++深入浅出】类和对象上篇(类的基础、类的模型以及this指针)

typedef int DataType;
class Stack //用class来定义一个类
{
	//成员函数、类方法
	void Init(size_t capacity){}
	void Push(const DataType& data){}
	DataType Top(){}
	void Destroy(){}
	//成员变量、类属性
	DataType* _array;
	size_t _capacity;
	size_t _size;
};

3.2 类的定义

        类的结构如下所示:

class className //class关键字+类名
{
	// 类主体:由成员函数和成员变量组成
}; // 后面的分号不要漏
  • class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分

    号不能省略。

  • 类主体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。

            类的定义方式有两种:声明和定义结合、声明和定义分离。

            声明和定义结合

             即声明和定义都放在类主体中,如下:

    class Date 
    {
    	//成员函数的声明+定义
    	void Print()
    	{
    		cout 
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]