返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++学习笔记之类与对象详解
  • 590
分享到

C++学习笔记之类与对象详解

2024-04-02 19:04:59 590人浏览 独家记忆
摘要

目录前言:1.访问限定符:【问题】c++中 struct和class的区别是什么?2.封装【问题】在类和对象的阶段,我们只研究类的封装特性,那什么是封装呢?3.类的定义与声明【问题】

前言:

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

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

举个例子:外卖系统

面向过程是下单、接单、送餐的三个过程

面向对象:客户 商家 骑手 这三个对象之间的面向关系。

1.访问限定符:

用类将对方的属性与方法结合在一起,让对象更加的完善,通过访问权限选择性的将其接口提供给外部用户使用。

1. 我们暂且认为 protected 和 private 是一类,都属于私有类型,在类外面不能直接被访问。

2.访问的权限是从作用域的访问限定符开始,到下一个访问限定符。

3.public修饰成员在类外面是可以被访问的

注意:访问限定符只在编译的时候有用,当数据映射到内存上时没有任何访问限定符的区别

【问题】C++中 struct和class的区别是什么?

解答:C++需要兼容C语言,所以C++中的struct可以当结构体去使用。另外C++中struct还可以用来定义类,和class的定义类是一样的。区别在于struct的成员默认访问方式为public,而class的成员默认访问方式是private。

2.封装

面向对象的三大特性:封装继承多态

【问题】在类和对象的阶段,我们只研究类的封装特性,那什么是封装呢?

封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。

一句话:封装的本质是管理,隐藏细节,开放接口。

3.类的定义与声明

【问题】函数调用的问题


	void Push(STDataType x)
	{
		// ...
		a[size] = x;
		size++;
	}
	// ...
	STDataType* a;
	int size;
	int capacity;
};
int main()
{
	//struct Stack st;
	Stack st;
	st.Init();
	st.Push(1);
	st.Push(2);
	st.Push(3);
	return 0;
}

这里的Push是调用的一个函数吗?

答案:是的,函数存在公共区域中的代码段。

4.类的作用域

类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员,需要使用 :: 作用域解析符 指明成员属于哪个类域。


class Person
{
public:
 void PrintPersonInfo();
private:
 char _name[20];
 char _gender[3];
 int _age;
};
// 这里需要指定PrintPersonInfo是属于Person这个类域
void Person::PrintPersonInfo()
{
 cout<<_name<<" "_gender<<" "<<_age<<endl; }

5.类的实例化

用类类型创建对象的过程,称为类的实例化

1. 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它。

2. 一个类可以实例化出多个对象,实例化出的对象 占用实际的物理空间,存储类成员变量。

3. 做个比方。类实例化出对象就像现实中使用建筑设计图建造出房子,类就像是设计图,只设计出需要什么东西,但是并没有实体的建筑存在,同样类也只是一个设计,实例化出的对象才能实际存储数据,占用物理空间。


    Stack s1;
	Stack s2;
	cout << sizeof(s1) << endl;
	cout << sizeof(s2) << endl;

大小遵从内存对齐的原则。

6.类的分类


class A1 {
public:
	void f1(){}
private:
	int _a;
};//标准类型
// 类中仅有成员函数
class A2 {
public:
	void f2() {}
};
// 空类
class A3
{};

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注编程网的更多内容!

--结束END--

本文标题: C++学习笔记之类与对象详解

本文链接: https://lsjlt.com/news/161178.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • C++学习笔记之类与对象详解
    目录前言:1.访问限定符:【问题】C++中 struct和class的区别是什么?2.封装【问题】在类和对象的阶段,我们只研究类的封装特性,那什么是封装呢?3.类的定义与声明【问题】...
    99+
    2024-04-02
  • OC runtime学习笔记之关联对象
    前言 Objective-C 不能动态的添加一些属性到对象上,和其他的一些原生支持这点的语言不一样。所以之前你都不得不努力为未来要增加的变量预留好空间。在 Mac OS X 10.6...
    99+
    2022-05-18
    oc runtime 关联对象
  • Redis学习笔记(六) 对象
    前面我们看了Redis用到的主要数据结构,如简单动态字符串(SDS)、双向链表、字典、压缩列表、整数集合等。 但是Redis并没有直接使用这些数据结构来实现键值对,而是基于这些数据结构创建了一个对象系统,这个系统包括字符串对象、列...
    99+
    2021-06-25
    Redis学习笔记(六) 对象
  • Java学习笔记之面向对象编程精解
    目录包继承super 关键字finalprotected关键字组合多态抽象类接口面向对象编程(包、继承、组合、多态 、抽象类、接口) 包 包其实就是类的集合,其本质上其实就是一个文件...
    99+
    2024-04-02
  • Nodejs学习笔记之Global Objects全局对象
    一,开篇分析 在上个章节中我们学习了NodeJS的基础理论知识,对于这些理论知识来说理解是至关重要的,在后续的章节中,我们会对照着官方文档逐步学习里面的各部分模块,好了该是本文主角登台亮相的时候了,Glob...
    99+
    2022-06-04
    全局 学习笔记 对象
  • C++学习笔记之类成员指针
    C++的类成员指针是一种奇葩的指针。 假设现在我们要表示一个三维的点,现在有两种定义方式: struct point1{ int x, y, z; }; struct point...
    99+
    2024-04-02
  • Java学习笔记之Pattern类的用法详解
    Pattern类是Java中正则表达式的主要类之一,它提供了一系列方法来操作正则表达式。正则表达式是一种用来匹配字符串的强大工具,它...
    99+
    2023-09-02
    java
  • js 面向对象学习笔记
    目录数据赋值拷贝值类型赋值--函数形参&实参引用类型赋值对象的动态性delete删除属性数据赋值拷贝 1、值得赋值是独立的 num1=12; num1=num2 将存储值赋值...
    99+
    2023-05-18
    js 面向对象
  • 详解python学习笔记之解释器
    目录1、python教程1.1 概述1.2 python标准库1.3 python语言参考手册1.4 python包索引1.5 术语对照表2、课前甜点3、python解析器3.1 传...
    99+
    2024-04-02
  • c++学习 之 类和对象 public , protected ,private
    前言 在C++中,访问控制修饰符(Access Control Modifiers)用于控制类的成员(成员变量和成员函数)的访问权限。这些修饰符分为三种:public、protected和private。它们定义了成员可以在何处访问,具体如...
    99+
    2023-08-30
    c++ 学习 开发语言
  • Android学习笔记之ContentProvider和Uri详解
    本文介绍了自定义Content Provider的相关内容,完全解析内容提供者的用法。Content Provider,内容提供者,相信大家对这个组件的名字都不陌生,可能是自己...
    99+
    2022-06-06
    android学习 uri Android
  • jQuery学习笔记之Ajax用法详解
    这篇文章主要介绍了jQuery学习笔记之Ajax用法,长沙网站建设结合实例形式较为详细的分析总结了jQuery中ajax的相关使用技巧,包括ajax请求、载入、处理、传递等,需要的朋友可以参考下 ...
    99+
    2024-04-02
  • python学习笔记之列表(list)与元组(tuple)详解
    前言 最近重新再看python的基础知识,感觉自己还是对于这些知识很陌生,需要用的时候还是需要翻书查阅,还是先注重基础吧——我要重新把python的教程阅读一遍,把以前自己忽略的部分学习,加强练习和记忆。 ...
    99+
    2022-06-04
    详解 学习笔记 列表
  • 打包 Java 对象:学习笔记分享
    Java 是一种常用的编程语言,开发者们常常需要将自己编写的 Java 对象打包成可执行的 JAR 文件。本文将分享一些打包 Java 对象的经验和技巧,以便于读者能够更加轻松地完成这项任务。 一、什么是 JAR 文件 JAR 文件是 J...
    99+
    2023-10-04
    打包 对象 学习笔记
  • Java 打包对象:学习笔记分享
    Java 是一门面向对象的编程语言,它的面向对象特性使得 Java 开发者可以轻松地组织代码和数据。但是,在编写代码的过程中,我们经常需要将一组相关的对象打包在一起进行处理。这就是 Java 打包对象的重要作用。本文将会分享 Java 打...
    99+
    2023-10-03
    打包 对象 学习笔记
  • Python学习笔记5——一切皆对象
    我发现我不适合看视频学习,看书看文字觉得更舒服,看大神的博客教程:Python快速教程——这是大神的第一篇博客,点击下一篇,一篇篇看下去,都很通俗易懂,坐看看大神是如何成长的,可以利用碎片时间看,收获很多,不再迷茫。 另外,下面的评论也很...
    99+
    2023-01-30
    学习笔记 一切皆 对象
  • TypeScript学习笔记之类型缩小
    目录类型缩小什么是类型缩小呢?常见的类型保护有如下几种:typeof平等缩小instanceofin总结类型缩小 什么是类型缩小呢? 类型缩小的英文是 Type Narrowing;...
    99+
    2024-04-02
  • Android学习笔记之AndroidManifest.xml文件解析(详解)
    一、关于AndroidManifest.xml AndroidManifest.xml 是每个android程序中必须的文件。它位于整个项目的根目录,描述了package中暴露...
    99+
    2022-06-06
    android学习 xml文件 XML Android
  • mybatis学习笔记之mybatis注解配置详解
    Java API既然你已经知道如何配置 MyBatis 和创建映射文件,你就已经准备好来提升技能了。 MyBatis 的 Java API 就是你收获你所做的努力的地方。正如你即将看到的,和 JDBC 相比, MyBatis 很大程度简化了...
    99+
    2023-05-30
    mybatis 注解 配置
  • 详解C++之类和对象(2)
    目录一.构造函数1.构造函数的定义:2.构造函数的特征:3.构造函数的实现:3.1.系统默认的构造函数3.2无参构造3.3 带参构造二 析构函数1.析构函数的定义2.析构函数的特征三...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作