C++浅析类与对象基础点

C++浅析类与对象基础点

目录

认识类和对象

访问限定符

this指针

认识类和对象

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

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

举一个例子,如果我们要设计一个点餐平台,依照生活中的例子

那么C:商家上架商品,客户点餐,通知商家制作外卖,通知骑手配送,客户吃完点评.....(过程)

而C++:商家、客户、骑手(对象)

从这个地方就衍生出了”类”这个概念。

我们在学习C语言的时候有过创建结构体

struct Student { char name[20]; int age; char gender[20]; };

而在C++中,我们通常习惯把struct改为class,同时C++和C不同,C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数

class Person { public: void showlnfo() { cout << name << sex << age << endl; } public: char name; char sex; int age; };

而由此我们引出”访问限定符”这个概念。

访问限定符

访问限定符有三个,分别是:

public(公有)

protected(保护)

private(私有)

1. public修饰的成员在类外可以直接被访问

2. protected和private修饰的成员在类外不能直接被访问

3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止(最后一个访问限定符作用域到结尾的;为止)

4. class的默认访问权限为private,struct为public(因为struct要兼容C)

this指针

我们先看一个代码

class Date { public: void Display() { cout << _year << "-" << _month << "-" << _day << endl; } void SetDate(int year, int month, int day) { _year = year; _month = month; _day = day; } private: int _year; // 年 int _month; // 月 int _day; // 日 }; int main() { Date d1, d2; d1.SetDate(2018, 5, 1); d2.SetDate(2018, 7, 1); d1.Display(); d2.Display(); return 0; }

这里,我们调用了两次setDate,分别是d1和d2,那么我们怎么知道s1调用SetDate函数

时,该函数是如何知道应该设置s1对象,而不是设置s2对象呢?

这里C++就引入了this指针:即:C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参

数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有成员变量的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成

拿上面的例子而言,实际上是这样的

void Display(Date* this)//实际上 { cout <<this-> _year << "-" <<this-> _month << "-" <<this-> _day << endl; } void Display()//你看到的 { cout << _year << "-" << _month << "-" << _day << endl; }

这样编译器就自动完成区分了。

这里再列举一下this指针的性质:

1. this指针的类型:类型* const

2. 只能在“成员函数”的内部使用

3. this指针本质上其实是一个成员函数的形参,是对象调用成员函数时,将对象地址作为实参传递给this形参。所以对象中不存储this指针。

4. this指针是成员函数第一个隐含的指针形参,一般情况由编译器通过ecx寄存器自动传递,不需要用户传递

到此这篇关于C++浅析类与对象基础点的文章就介绍到这了,更多相关C++类与对象内容请搜索易知道(ezd.cc)以前的文章或继续浏览下面的相关文章希望大家以后多多支持易知道(ezd.cc)!

推荐阅读

    Python之可迭代对象、迭代器、生成器

    Python之可迭代对象、迭代器、生成器,迭代,生成器,一、概念描述可迭代对象就是可以迭代的对象,我们可以通过内置的iter函数获取其迭代器,可

    应用程序对象

    应用程序对象,,应用程序对象是一个应用程序级对象,用于在所有用户之间共享信息,并且在Web应用程序运行期间可以保存数据。 应用的性质: 方法

    Java创建对象的几种方式

    Java创建对象的几种方式,对象,方法,本文目录Java创建对象的几种方式java中几种创建对象的方式1Java中创建对象的集中方式有那些JAVA创建对

    wps快速的编辑图层|WPS巧用对象图层

    wps快速的编辑图层|WPS巧用对象图层,图层,编辑,快速,wps,1.WPS 如何巧用对象图层一、认识对象图层工具及按纽1、您可以在插件工具栏中可以

    空对象快捷键|空白对象快捷键

    空对象快捷键|空白对象快捷键,,空白对象快捷键以win7系统为例1.在键盘上找到Ctrl➕alt➕delete同时按下2.出现下图界面后,在右下角找到红色

    选择对象快捷键|对象全选的快捷键

    选择对象快捷键|对象全选的快捷键,,对象全选的快捷键第一种最常用最实用的Ctrl+鼠标多选单击选择一个文件夹或文件,然后左手按着“Ctrl”键

    ai对象对齐快捷键|ai智能对象快捷键

    ai对象对齐快捷键|ai智能对象快捷键,,1. ai智能对象快捷键找到“分割下方对象”,点击快捷键,然后同时按住“ctrl+1”,里面只要显示了,那就是可