C++类和对象的基础知识详解

全国职业院校技能大赛-大数据应用赛项-数据挖掘-01 -----------------------推荐Top5结果如下--------------------------------------------第一条数据前10列结果展示为:----------------------------------------相同种类前10的id结果展示为:--------------------相似度top5(商品id:14,平均相似度:0.522356)相似度top1(商品id:1,平均相似度:0.983456)若属于该spu_id,则内容为1否则为0。 阅读详情

C++类和对象

类

类构成了实现C++面向对象程序设计的基础。
类是C++封装的基本单元,它把数据和函数封装在一起。

一个类描述一类事物,描述这些事物所应具有的属性。

  • 定义成员函数

    • 类定义是提供给更多不同用途的程序共享的,并不受单个程序应用的影响而“优化”。
    • 在类中定义的成员函数一般规模都比较小,且特别的switch语句不允许使用。
    • 类中的函数一般为内联函数,即使没有明确用inline标明。
    • 在类中定义的成员被默认为内联函数。
  • 在类之后定义成员函数

    • 将类定义和其成员函数定义分开来,是目前开发程序的通常做法。
    • 我们把类定义(头文件)看成是类的外部接口,类的成员函数定义看成是类的内部实现。
    • 在类定义的外部定义成员函数,需要在成员函数名前多加上一个“类名: :”
    • 因为成员函数是所有对象共享的代码,不是某一个对象所独占的,所以不能在成员函数内使用某个特定的对象。
  • 隐含的this指针

    • 一般情况下,成员函数除了接受实参之外,还会接受到对象的地址。
    • 这个地址被一个隐含的形参this指针所获取,等同于执行this = &x;
    • 所有对数据成员的访问都隐含地被加上前缀this->。
    • 所有的成员函数都会默认有this指针,static类型的函数除外。
    • this指针是成员函数隐含指针形参,是编译器自己处理的,我们不能在成员函数的形参中添加this指针的参数定义,也不能在调用时
      显示传递对象的地址给this指针。
  • 类的访问限定符

    • public(公有)
      • 编制应用程序,想要使用某个类,所要了解的全部内容就是它的公共成员。
      • 公共成员在任何地方都可以被访问。
    • private(私有)
      • 一个类定义,如果不写访问控制说明符,那么它就默认为private。
      • 外部无法访问私有成员,而起到保护作用。
    • protected(保护)
      • 保护类的内部数据
      • 保护成员对使用者来说是不可见的
      • 对内部可见
      • 常用于继承
    • 类的访问限定符体现了面向对象的封装性。
  • 作用域

    • 局部域
    • 全局域
    • 类域
    • 名字空间域
  • 类的作用域

    类的作用域是指类定义和相应的成员函数定义范围

    • 每个类都定义了自己的作用域,类的成员(成员函数/成员变量)都在类的这个作用域内,成员函数内可任意访问成员变量和其它成员函数。
    • 对象可以通过 . 直接访问公有成员,指向对象的指针通过 -> 也可以直接访问对象的公有成员。
    • 在类体外定义成员,需要使用 :: 作用域解析符指明成员属于哪个类域。

对象

算法总是离不开数据结构,算法也只能适用于特定的数据结构。
在面向对象中,算法与数据结构被捆绑成一个类。
也就是说,程序就是许多对象在计算机中相继表现自己,而对象又是一个个程序实体。

一个对象是类的一个实例,它具有确定的属性。

  • 面向对象的三大特性

    • 封装
    • 继承
    • 多态
  • 类和对象的区别

    • 对象可以被创建和销毁,但类是无所不在的。
  • 定义对象

    • 属于不同类的对象在不同的时刻、不同的地方分别被建立。
    • 全局对象在主函数开始执行前首先被建立。
    • 局部对象在程序执行遇到它们的对象定义时才被建立。
    • 在定义对象时,C++会为其分配空间。
  • 对象的初始化

    • C++建立和初始化对象的过程专门由该类的构造函数来完成。
    • 只要对象建立,则马上会调用构造函数,给对象分配空间和初始化。
  • 对象的内存储存模型

    • 所有对象的大小为类中所有成员变量的大小之和。
    • 遵循内存对齐原则——以空间换时间。
    • 空类域占一个字节。

这里写图片描述

类的默认成员函数

构造函数

类的封装性,体现在一部分数据是不能让外界访问的。
所以直接在非成员函数中访问类对象的保护或私有数据是不允许的。

C++规定与类同名的成员函数是构造函数,在该类的对象创建时,自动被调用

  • 构造函数没有返回类型,函数体中也不允许返回值,但可以有无值返回语句“return”。
  • 构造函数不能被随意调用。
  • 放在外部定义的构造函数,其函数名前需要加上“类名: :”,以区分此类成员函数和彼类成员函数。

IMPORTANT
* C++规定,每个类必须有一个构造函数,没有构造函数,就不能创建任何对象。
* 若未提供一个类的构造函数,则C++提供一个默认的构造函数,该默认构造函数是个无参构造函数,它仅负责创建对象,而不做任何初始化工作。
* 只要一个类定义了一个构造函数(不一定是无参构造函数),C++就不再提供默认的构造函数。也就是说,如果为类定义了一个带参数的构造函数,还想要无参构造函数,则必须自己定义。
* 与变量定义类似,在用默认构造函数创建对象时,如果创建的是全局对象或静态对象,则对象的位模式全为0,否则,对象值是随机的。

构造函数成员的初始化
* 方法一

  d = 10;
  • 方法二
SillyClass2()
    :d(10)
    {}
  • 哪些成员变量必须放在初始化列表里面?
    1. 常量成员变量。(常量创建时必须初始化)
    2. 引用类型成员变量。(引用创建时必须初始化)
    3. 没有缺省构造函数的类成员变量。
拷贝构造函数
  • 用一个对象去构造另一个对象,或者说,用另一个对象值初始化一个新构造的对象
  • 拷贝构造函数的参数必须使用引用传参,使用传值方式会引发无穷递归调用。
析构函数

析构函数是特殊的类成员函数,它没有返回类型,没有参数,不能随意调用,也没有重载。只是在类对象生命期结束的时候,由系统自动调用。

  • 作为一个类,可能有许多对象,每当对象生命期结束时,都要调用析构函数。
  • 析构函数名,就是在构造函数名前加一个逻辑非运算符“~”,表示“逆构造函数”。
  • 如果动态开辟了空间,需要自己重新定义一个析构函数。
赋值运算符的重载
  • 为什么要有运算符的重载?

    • 可以把C++运算符的定义扩展到运算分量是对象的情况。
    • 使C++代码更直观,更易读。
  • 5个C++不能重载的运算符:

    • .*
    • ::
    • sizeof
    • ?:
    • .
  • operator + 合法的运算符 构成函数名(重载<运算符的函数名:operator< )。
  • 重载运算符以后,不能改变运算符的优先级/结合性/操作数个数。
  • 赋值运算符的重载是对一个已存在的对象进行拷贝赋值。
  • 增量运算符
    • 前增量

      &operator++();
    • 后增量

      opertor++(int);
Python 中调用 R 语言的教程(包含编码问题解决办法) rpy2 是一个 Python 库,允许在 Python 中直接运行 R 代码并实现数据转换。安装需确保 Python 和 R 环境正确配置,Windows 用户需注意编码问题(GBK 错误可通过控制面板调整区域设置解决)。基本用法包括执行 R 代码、传递数据(支持 Python 与 R 数据类型自动转换)以及调用 R 包函数。通过 robjects.r() 执行 R 代码,使用 pandas2ri 转换器处理 DataFrame 数据交换,并支持像导入 Python 模块一样加载 R 包(如 import 阅读详情

相关推荐

WinCC与施耐德PLC的Modbus TCP通信实战指南

本文详细解析了西门子WinCC与施耐德PLC通过Modbus TCP协议实现通信的完整实战流程。内容涵盖硬件网络配置、Modbus地址映射核心规则、WinCC驱动连接建立、变量创建及高级数据访问技巧,并提供了常见故障排查思路,帮助工程师高效解决跨品牌设备通信难题。

weixin_29194693的博客 1001

类与对象 C++

概念 描述 类成员函数 类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。 类访问修饰符 类成员可以被定义为 public、private 或 protected。默认情况下是定义为 private。 构造函数 & 析构函数 类的构造函数是一种特殊的函数,在创建一个新的对象时调用。类的析构函数也是一种特殊的函数,在删除所创建的对象时调用。 C++ 拷贝构造函数 拷贝构造函数,是一种特殊的构造函数,它在创建对象时,是使用同一

生活需要深度 2417

Pentaho安装与配置

Pentaho安装与配置前言一、下载二、配置1.JDK环境2.添加mysql-jdbc驱动三、启动 前言 Pentaho Data Integration (PDI):前身是Kettle。Pentaho提供了提取、转换和加载(ETL)功能,该功能使用统一且与最终用户和物联网技术相关且可访问的格式简化了捕获、清理和存储数据的过程。 功能:提供报表的制作、分析、仪表板、数据集成、数据采集、商业智能平台等强大功能。 一、下载 官网地址:http://www.pentaho.com/ 不过已经访问不到了

小太阳DENGJIE的博客 3605

c++类全面讲解

这次主要讲类的基础、构造函数与析构函数的使用,以及继承和多态。这次从类的基础知识开始,讲了构造函数、析构函数、以及类的成员变量和方法。接着,讲了重载构造函数、拷贝构造函数、赋值运算符以及静态成员。然后讲了继承、多态、友元类和友元函数。最后模板类的概念,还有一些高级特性的基本概念。

shopeeai的博客 2092

为什么类型论是函数式编程的理想基础?

函数式编程(如Haskell、Scala、OCaml)以“函数为核心”“无副作用”“不可变数据”等特性著称,但它的“安全高效”并非凭空而来——背后的关键支撑是类型论。本文将聚焦“类型论如何支撑函数式编程”,从基础概念到具体案例,解释两者的本质联系。本文将按“故事引入→核心概念解释→关系拆解→原理+代码案例→实际应用→总结”的逻辑展开,用“乐高积木”“菜谱”等比喻贯穿全文,确保抽象理论可视化。类型论:程序的“接口规则手册”,定义类型和函数的约束;函数式编程。

AI天才研究院 694

特征提取 Features Extraction

介绍了特征提取的基本概念,从分类变量,文本信息和图片信息中进行特征提取的方法,以及实现特征提取的类库

JasonH2021的博客 1万+

c++类详解

C++中的类是面向对象编程的基石,通过封装数据和方法,可以实现模块化、可重用、可扩展的代码结构。希望读者通过学习类的知识,能够灵活运用面向对象编程的思想,编写出高效、可维护的C++程序。本文将详细介绍C++中的类概念、类的成员、访问控制以及构造函数和析构函数,并提供多个具体示例代码以帮助读者深入理解类的使用和设计。通过类,我们可以创建多个对象,每个对象都拥有相同的数据成员和成员函数,但可能存在不同的状态和行为。成员函数可以是公有的、私有的或受保护的,用于控制对数据成员的访问权限。

浪子回头 2556

Transformer实战——Transformer自编码模型

自编码模型依赖于原始 Transformer 编码器,并且在解决分类问题时非常高效。除了 BERT 外,还有许多流行的自编码模型,在本节中,我们将一些除 BERT 外的自编码模型,这些模型的目标是通过优化预训练过程、增加层数或头数、改善数据质量、设计更好的目标函数等,来在下游任务上取得更好的表现。这些改进大致可以分为两个方面,更好的架构设计选择和预训练控制。

盼小辉丶的博客 9319

通俗易懂C++类和对象详解(一)什么是类?如何实现?

6000字详细介绍:类的定义,访问限定符,作用域,对象在内存中的储存形式,成员函数,this指针,static修饰,友元…

qq_45412824的博客 1887

YOLOv13改进策略【Backbone/轻量化】| 替换骨干网络 CVPR-2024 StarNet,超级精简高效的轻量化模块

本文记录的是。StarNet设计简洁,没有复杂的设计和精细调整的超参数,仅是一个 4 阶段的分层架构。并且其中能够在低维空间计算的同时考虑极高维的特征这一特性,进而提高模型精度。本文在替换骨干网络中配置了原论文中的starnet_s1starnet_s2starnet_s3和starnet_s4七种模型,以满足不同的需求。

Limiiiing的博客 669

赛豆科技 AIVA 汽车智能体架构演进面试题与答案

摘要 赛豆科技AIVA汽车智能体架构从座舱AI演进到整车智能体,最终实现自进化的超级智能体。其核心是"先有AI再有车"的理念,将AI作为产品主轴而非附加功能。架构设计采用端-边-云协同,确保低延迟响应;整车智能体通过Planner、Tool Registry等关键组件实现自主决策;自进化机制结合车端个性化学习和云端群体学习,并设置多重安全验证。多域协作采用分层架构,关键安全功能仍由确定性逻辑控制。该架构实现了从被动响应到主动服务的范式转变,使车辆能够持续进化。

AI天才研究院 121

C++ 类与对象

C++ 类与对象

墨上烟雨 8009

AUTOSAR从入门到精通-【应用实战篇】车载HMI-ADAS

ADAS是高级驾驶辅助系统(Advanced Driving Assistance System)简称ADAS。ADAS高级驾驶辅助系统是利用安装于车上的各式各样的传感器, 在第一时间收集车内外的环境数据, 进行静、动态物体的辨识、侦测与追踪等技术上的处理, 从而能够让驾驶者在最快的时间察觉可能发生的危险, 以引起注意和提高安全性的主动安全技术。

lin_xiu的博客 1435

C++类和对象基础知识详解

1.对象(object) 1.一切皆是对象。如下图: ·女人是一个对象 ·鞋子是一个对象 ·包包是一个对象 ·衣服是一个对象 ·裤子是一个对象 ·手链是一个对象 … 2.对象由对象组成. 这里人这个对象,由鞋子、包包、衣服、 裤子、手链等对象组成。 3.每个对象都有: a)数据(描述对象的属性) b)函数(行为操作代码) 2.类(class) ·具有相同属性和行为的对象,我们可以把它抽象为类。 ·类是对象的抽象 ·对象是类的特例 3.面向对象的程序设计(OOP) ·面向过程的程序设计(Pro

专业^团队的博客 2477

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【c++】上万字详解c++类和对象的基础知识

C++编译器给每个“非静态的成员函数“增加了一个隐藏的指针参数,让该指针指向当前对象(函数运行时调用该函数的对象),在函数体中所有“成员变量”的操作,都是通过该指针去访问。对于Date类,可以通过 Init 公有方法给对象设置日期,但如果每次创建对象时都调用该方法设置信息,未免有点麻烦,那能否在对象创建时,就将信息设置进去呢?,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。

小刘好好学习的博客 792

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

C++类和对象基础知识

c++类和对象基础的知识

pythom_aaa的博客 725

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【C++】类和对象(一)

类和对象第一部分知识包括定义访问限定符类域实例化this指针

2401_86940607的博客 1270

C++ 类和对象(一)

在计算机编程的世界里,语言的演进是为了更好地适应开发的需要,提高软件的质量和开发效率。C++作为一种高效的编程语言,它在C语言的基础上增加了面向对象的特性。这篇博客将带你了解C++中类和对象的基础知识,为你打开面向对象编程的大门。

wxk2227814847的博客 1100

C++类和对象详解

类与对象上篇: 主要内容: 1.类和对象的区别。 2.类的定义。 3.类的访问限定符和封装 4.类的作用域 5.类的实例化(用类类型创建对象) 6.计算类对象的大小 7.this指针 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 1.类和对象的区别: 类是抽象的,不占用内...

weixin_43730061的博客 8149

c++类和对象

全文将讲解《类和对象》,文章比较长,请慢慢观看!

includeevey的博客 8696

【C++类和对象】类和对象的引入

C++中通过类可以将数据以及操作数据的方法进行完美结合,通过访问权限可以控制哪些方法在类外可以被调用,即封装,在使用时就像使用自己的成员一样,更符合人类对一件事物的认知。

Renswc的博客 2672

【Cpp】类和对象

类的认识,类和对象(一)

石墨博客 1175

【c++】cpp类和对象

c++中类和对象基本用法

hutaotaotao的博客 1268

【c++】类和对象详解

class为类定义的关键字class 类名{//代码块(类的主体)//注意分号不能省略1.类体中的内容称为类的成员,类中的变量称为类的成员变量,类中的函数为类的成员函数2.为了区分成员变量,我们常在成员变量前加一个 _ ,以此来区分public://成员函数代码块...private:int _year;int _month;int _day;3.C++中也可以用struct定义类,C++兼容C,明显的变化是struct里面也能定义函数,不过我们这里还是推荐用class定义类。

wcblh的博客 1486

[C/C++]详解C++的类和对象

类是现实世界或思维世界中的实体在计算机中的反映,它将数据以及这些数据上的操作封装在一起。对象是具有类类型的变量。类和对象是面向对象编程技术中的最基本的概念。 1.面向对象 首先来理解什么是面向对象编程。 C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。 C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。 2.类的引入 在C++中的结构体内不仅可以定义变量,也可以定义函数。在C++中常用class来代替struct struct Stud

RMA515T的博客 3万+

【C++】认识类和对象

学习C语言时,我们就经常听说C语言是面向过程的,那么什么是面向过程呢?举个例子,我们现在要完成洗衣服的工作,此刻我们关注的是洗衣服的过程:拿个盆子;接水;放衣服;到洗衣粉C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是面向对象的,关注的是对象,在解决问题时,通过对象间的交互来完成,每个对象负责不同的工作。//...类的主体:由成员函数和成员变量组成//一定要注意后面的分号如上所示,类的定义与结构体的定义非常相似,但我们还是得认识几个专有名词。

Aron的博客 2230
上一篇: C++入门基础知识详解
下一篇: C/C++中的动态内存管理
JS-js
博客等级 码龄10年 10粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值