C++初阶 类和对象(上)

这篇具有很好参考价值的文章主要介绍了C++初阶 类和对象(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:C++初阶系列,每一期博主都会使用简单朴素的语言将对应的知识分享给大家,争取让所有人都可以听懂,C++初阶系列会持续更新,上学期间将不定时更新,但总会更的

目录

一、什么是面向对象编程

二、什么是类和如何定义类

1.类的概念

2.类的特点

3.访问限定符

4.如何定义类

5.类定义的小细节

6.类的大小如何计算?

7.this指针

三、下期预告


一、什么是面向对象编程

在C语言中,我们编写代码更多地是面向过程进行编写的,通过分析出求解问题的步骤,然后函数调用逐步解决问题。比方说洗衣服,在C语言的实现就是打开洗衣机->放衣服进去->倒入洗衣液->关上洗衣机->启动洗衣机->洗衣机翻滚->洗衣机甩干......如此一步一步地实现。

而在C++中更多的是面向对向对象进行编写的。洗衣服这个操作,操作的对象便有4个,洗衣机,洗衣液,衣服和人,洗衣服在C++的实现则是使用这4个对象互相交互实现的,而人是不需要去关注洗衣机是如何去洗衣服的,只需要把事情交给洗衣机干就行了。这便是面向过程编程和面向对象编程的区别。

二、什么是类和如何定义类

1.类的概念

其实在C语言的学习中,我们已经接触到了类这一内容,那便是我们的结构体, 而在C++中更喜欢将结构体称作类。在C语言中我们使用struct定义结构体,在C++中我们不仅可以通过struct定义类,也可以通过class定义类。两种方式几乎一样,只有一点是不太一样的,后面在访问限定符中我们会讲到。

2.类的特点

相比于C语言中结构体的使用,类的使用更显特别,类的里面不止可以定义成员,还可以定义成员函数,更有趣的是它可以令部分内容为私有,令部分内容为公有。什么是公有呢,在类外面也可以访问,而私有则相反,只能在类中使用,听上去是不是有点抽象,没关系,我们在之后的内容会有详细的讲解。

3.访问限定符

在讲解如何定义类之前我们还要再补充一点,那便是访问限定符。类的访问限定符分为三种:public(公有的),protected(被保护的),private(私有的),private和protected在目前的学习中是可看作一样的,之后需要使用到它们之间的特性时会特别强调,当然这还要很久。回到之前的问题,struct和class有什么区别?

区别就在于struct定义的类默认是公有的,class定义的类默认是私有的。

1. public修饰的成员在类外可以直接被访问
2. protected和private修饰的成员在类外不能直接被访问
3. 访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
4. 如果后面没有访问限定符,作用域就到 } 即类结束。

4.如何定义类

方法1:声明和定义全部放在类中

#include<iostream>
using namespace std;
class abc
{
public:
//公有的,意味着可以被外界访问
	void init()
	//初始化函数
	{
		_a = 520;
		_b = nullptr;
		_c = 13.14;
	}
	void print()
	//打印函数
	{
		cout << _a << endl;
		cout << _b << endl;
		cout << _c << endl;
	}
private:
//私有的,不能被外界访问
	int _a;
	int* _b;
	double _c;
};
int main()
{
	abc a1;
	//创建一个类型为abc的变量a1;
	a1.init();
   //初始化
	a1.print();
	//打印
}

简单运行下

C++初阶 类和对象(上),C++初阶,c++,开发语言 试着访问下私有,报错

C++初阶 类和对象(上),C++初阶,c++,开发语言

方法2:声明和定义分离:

在写类的成员函数时肯定会有同学想像之前一样,将多个函数的定义写在同一个文件中。这是可以实现的

声明写在头文件中C++初阶 类和对象(上),C++初阶,c++,开发语言

定义写在对应文件中

C++初阶 类和对象(上),C++初阶,c++,开发语言

一样可以运行出正确结果 

C++初阶 类和对象(上),C++初阶,c++,开发语言

5.类定义的小细节

不知道你们有没有发现,博主在定义类的成员变量的时候在变量之前加了_定义了_a,_b,_c这样的变量,为什么博主不直接定义a,b,c呢?当我们在进行赋值操作的时候,令成员变量变为另一个参数时,我们书写的代码很可能是这样的,a对应a,b对应b,c对应c。

C++初阶 类和对象(上),C++初阶,c++,开发语言

当有同名变量出现的时候,编译器会根据就近原则进行运行,也就是令100=100,200=200,300=300并不会真正影响到我们创建的abc中的成员变量,为了方便区分,我们在创建类的时候,通常会在成员变量前加_或者是后加_,如此便可以很快速的识别出变量的用途,对变量进行对应的赋值。 

C++初阶 类和对象(上),C++初阶,c++,开发语言

6.类的大小如何计算?

先说一个结论:类的计算是不包括this指针和成员函数的,this指针等下会讲到。如何计算类的大小,有如下规则(把结构体换成类即可)

(1) 第一个成员在与结构体变量偏移量为0的地址处。
(2) 其他成员变量要对齐到某个对齐数的整数倍的地址处。
对齐数 = 编译器默认的一个对齐数与该成员大小的较小值。
VS中默认的值为8
(3) 结构体总大小为最大对齐数(每个成员变量都有一个对齐数)的整数倍。
(4) 如果嵌套了结构体的情况,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整
体大小就是所有最大对齐数(含嵌套结构体的对齐数)的整数倍。


自定义类型详解_大海里的番茄的博客-CSDN博客

博主写的这篇文章有更详细的解答,感兴趣的同学可以去看一下。

7.this指针

学过C语言的同学看这个传递变量的过程一定会觉得怪怪的:为什么不用.或者->就能够修改结构体的成员变量呢(类),那是因为我们C++有一个隐藏的变量被传递过去了,那便是this指针,this指针存放了你所传递变量的地址   且在中所有“成员变量”的操作,都是通过该指针去访问。只不过所有的操作对用户是透明的,即用户不需要来传递,编译器自动完成。

当然你想要显示的实现变量的访问过程也是可以的,两者没有区别。如果你之前写的是C语言,现在一定会很爽QAQ。

最后需要提醒的一点细节便是this指针为了方便调用一般存储在寄存器上。

C++初阶 类和对象(上),C++初阶,c++,开发语言

C++初阶 类和对象(上),C++初阶,c++,开发语言

三、下期预告

下一回我们来聊下构造函数和析构函数,这周必出餐QAQ

好了,今天的分享到这里就结束了,感谢各位友友的来访和阅读,祝各位友友们前程似锦O(∩_∩)O 文章来源地址https://www.toymoban.com/news/detail-742626.html

到了这里,关于C++初阶 类和对象(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++初阶】类和对象(上)

    📖 面向过程 C语言是 面向过程的 ,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。以洗衣服这件事为例,下图是C语言完成洗衣服这件事的过程。 📖 面向对象 C++是 基于面向对象的 ,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完

    2024年02月16日
    浏览(29)
  • 【C++初阶】类和对象(一)

    ​ ​📝个人主页:@Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:C++学习 🎯 长路漫漫浩浩,万事皆有期待 上一篇博客:【C++】C++入门(一):命名空间C++的输入输出缺省参数函数重载 C语言是面向过程的,关注的是过程,分析求解问题的步骤,通过

    2024年02月01日
    浏览(25)
  • C++初阶 - 3.类和对象(中)

    目录 1.类的6个默认成员函数 2.构造函数 2.2特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1运算符重载  5.2 赋值运算符重载 5.3 前置++和后置++重载 6.日期类的实现 7.const成员 8.取地址及const取地址操作符重载 如果一个类中什么成员都有,

    2024年02月16日
    浏览(31)
  • C++学习之路(C++初阶)——类和对象(上)

    ✨✨欢迎来到T_X_Parallel的博客!!       🛰️博客主页:T_X_Parallel       🛰️专栏 : C++初阶       🛰️欢迎关注:👍点赞🙌收藏✍️留言       🛰️友友们的支持是本博主更新的动力   本博客主要为学习C++类和对象内容做准备,开头补充

    2024年02月07日
    浏览(25)
  • 【C++初阶】第三站:类和对象(中) -- 日期计算器

    目录 前言 日期类的声明.h 日期类的实现.cpp 获取某年某月的天数 全缺省的构造函数 拷贝构造函数 打印函数 日期 += 天数 日期 + 天数 日期 -= 天数 日期 - 天数 前置++ 后置 ++ 前置 -- 后置-- 日期类中比较运算符的重载 运算符重载 ==运算符重载 != 运算符重载 =运算符重载 运算符

    2024年02月19日
    浏览(33)
  • 【C++初阶】类和对象——构造函数&&析构函数&&拷贝构造函数

    ========================================================================= 个人主页点击直达: 小白不是程序媛 C++系列专栏: C++头疼记 ========================================================================= 目录 前言 类的6个默认成员函数 构造函数 概念 构造函数的特性 析构函数 概念 析构函数特性 拷贝构

    2024年02月06日
    浏览(40)
  • 【C++初阶】第三站:类和对象(中) -- 类的6个默认成员函数

    目录 前言 类的6个默认成员函数 构造函数 概念 特性 析构函数  概念 特性 拷贝构造函数 概念 特征 赋值运算符重载 运算符重载 赋值运算符重载 const成员 const修饰类成员函数 取地址及const取地址操作符重载 本章总结:         有时候我们写好了一个栈,头脑中第一件事

    2024年02月20日
    浏览(30)
  • 【C++初阶】六、类和对象(初始化列表、static成员、友元、内部类)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】五、类和对象 (日期类的完善、流运算符重载函数、const成员、“”取地址运算符重

    2024年02月05日
    浏览(34)
  • 【C++初阶】四、类和对象(构造函数、析构函数、拷贝构造函数、赋值运算符重载函数)

    ========================================================================= 相关代码gitee自取 : C语言学习日记: 加油努力 (gitee.com)  ========================================================================= 接上期 : 【C++初阶】三、类和对象 (面向过程、class类、类的访问限定符和封装、类的实例化、类对象模

    2024年02月05日
    浏览(45)
  • 【C++初阶】类和对象——操作符重载&&const成员函数&&取地址重载&&日期类的实现

    ========================================================================= 个人主页点击直达: 小白不是程序媛 C++系列专栏: C++头疼记 ========================================================================= 目录   前言: 运算符重载 运算符重载  赋值运算符重载 前置++和后置++重载 const成员 取地址及cons

    2024年02月06日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包