iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++类和对象到底是什么
  • 127
分享到

C++类和对象到底是什么

2024-04-02 19:04:59 127人浏览 安东尼
摘要

目录1、c++ 中的类2、面向对象编程(Object Oriented Programming,OOP)1、C++ 中的类 C++ 中的类(Class)可以看做C语言中结构体(Str

1、C++ 中的类

C++ 中的类(Class)可以看做C语言中结构体(Struct)的升级版。结构体是一种构造类型,可以包含若干成员变量,每个成员变量的类型可以不同;可以通过结构体来定义结构体变量,每个变量拥有相同的性质。

例如:


#include <stdio.h>
//定义结构体 Student
struct Student{
    //结构体包含的成员变量
    char *name;
    int age;
    float score;
};
//显示结构体的成员变量
void display(struct Student stu){
    printf("%s的年龄是 %d,成绩是 %f\n", stu.name, stu.age, stu.score);
}
int main(){
    struct Student stu1;
    //为结构体的成员变量赋值
    stu1.name = "小明";
    stu1.age = 15;
    stu1.score = 92.5;
    //调用函数
    display(stu1);
    return 0;
}

运行结果:

小明的年龄是 15,成绩是 92.500000

C++ 中的类也是一种构造类型,但是进行了一些扩展,类的成员不但可以是变量,还可以是函数;通过类定义出来的变量也有特定的称呼,叫做“对象”。

例如:


#include <stdio.h>
//通过class关键字类定义类
class Student{
public:
    //类包含的变量
    char *name;
    int age;
    float score;
    //类包含的函数
    void say(){
        printf("%s的年龄是 %d,成绩是 %f\n", name, age, score);
    }
};
int main(){
    //通过类来定义变量,即创建对象
    class Student stu1;  //也可以省略关键字class
    //为类的成员变量赋值
    stu1.name = "小明";
    stu1.age = 15;
    stu1.score = 92.5f;
    //调用类的成员函数
    stu1.say();
    return 0;
}

运行结果与上例相同。

对于熟悉 C++ 的读者,这段代码并不规范,请忽略这一细节,本节的重点是引入类和对象的概念。这套 C++ 教程是在C的基础上编写的,我并不希望一开始就提出过多的 C++ 概念,让读者吃不消,我希望读者从C逐渐过渡到 C++,从第二章开始编写规范的 C++ 代码。也就是说,包括本节在内,第一章有很多不规范的 C++ 代码,再次请熟悉 C++ 的读者忽略。

class public 都是 C++ 中的关键字,初学者请先忽略 public(后续会深入讲解),把注意力集中在 class 上。

C语言中的 struct 只能包含变量,而 C++ 中的 class 除了可以包含变量,还可以包含函数。display() 是用来处理成员变量的函数,在C语言中,我们将它放在了 struct Student 外面,它和成员变量是分离的;而在 C++ 中,我们将它放在了 class Student 内部,使它和成员变量聚集在一起,看起来更像一个整体。

结构体和类都可以看做一种由用户自己定义的复杂数据类型,在C语言中可以通过结构体名来定义变量,在 C++ 中可以通过类名来定义变量。不同的是,通过结构体定义出来的变量还是叫变量,而通过类定义出来的变量有了新的名称,叫做对象(Object)。

在第二段代码中,我们先通过 class 关键字定义了一个类 Student,然后又通过 Student 类创建了一个对象 stu1。变量和函数都是类的成员,创建对象后就可以通过点号.来使用它们。

可以将类比喻成图纸,对象比喻成零件,图纸说明了零件的参数(成员变量)及其承担的任务(成员函数);一张图纸可以生产出多个具有相同性质的零件,不同图纸可以生产不同类型的零件。

类只是一张图纸,起到说明的作用,不占用内存空间;对象才是具体的零件,要有地方来存放,才会占用内存空间。

在 C++ 中,通过类名就可以创建对象,即将图纸生产成零件,这个过程叫做类的实例化,因此也称对象是类的一个实例(Instance)。

有些资料也将类的成员变量称为属性(Property),将类的成员函数称为方法(Method)。

2、面向对象编程(Object Oriented Programming,OOP)

类是一个通用的概念,C++、Java、C#PHP 等很多编程语言中都支持类,都可以通过类创建对象。可以将类看做是结构体的升级版,C语言的晚辈们看到了C语言的不足,尝试加以改善,继承了结构体的思想,并进行了升级,让程序员开发或扩展大中型项目时更加容易。

因为 C++JavaC# php 等语言都支持类和对象,所以使用这些语言编写程序也被称为面向对象编程,这些语言也被称为面向对象的编程语言。C语言因为不支持类和对象的概念,被称为面向过程的编程语言。

在C语言中,我们会把重复使用或具有某项功能的代码封装成一个函数,将拥有相关功能的多个函数放在一个源文件,再提供一个对应的头文件,这就是一个模块。使用模块时,引入对应的头文件就可以。

而在 C++ 中,多了一层封装,就是类(Class)。类由一组相关联的函数、变量组成,你可以将一个类或多个类放在一个源文件,使用时引入对应的类就可以。下面是C和C++项目组织方式的对比:

不要小看类(Class)这一层封装,它有很多特性,极大地方便了中大型程序的开发,它让 C++ 成为面向对象的语言。

面向对象编程在代码执行效率上绝对没有任何优势,它的主要目的是方便程序员组织和管理代码,快速梳理编程思路,带来编程思想上的革新。

面向对象编程是针对开发中大规模的程序而提出来的,目的是提高软件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是矛盾的,而是各有用途、互为补充的。如果你希望开发一个贪吃蛇游戏,类和对象或许是多余的,几个函数就可以搞定;但如果开发一款大型游戏,那你绝对离不开面向对象。

到此这篇关于C++类和对象到底是什么的文章就介绍到这了,更多相关C++类和对象内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: C++类和对象到底是什么

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

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

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++类和对象到底是什么
    目录1、C++ 中的类2、面向对象编程(Object Oriented Programming,OOP)1、C++ 中的类 C++ 中的类(Class)可以看做C语言中结构体(Str...
    99+
    2024-04-02
  • C++中类和对象是什么
    这篇文章给大家分享的是有关C++中类和对象是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。类和对象<上>面向对象一直以来都是面向过程编程比如C语言,直到七十年代面向过程编程在开发大型程序时表现出不...
    99+
    2023-06-29
  • Django对象数据类型到底是什么?详解!
    Django是一个流行的Python Web框架,它提供了许多功能强大的功能,使得Web开发变得更加容易和快速。其中之一是Django对象关系映射(ORM)系统,它允许开发人员使用Python对象来操作数据库,而不必编写SQL查询。在这个O...
    99+
    2023-08-21
    django 对象 数据类型
  • c++中什么是类,什么是对象
    c++kquote>类在 c++ 中代表对象集合的模板,定义了对象的属性(数据成员)和行为(成员函数)。对象是类的实例,拥有类中的所有数据成员和成员函数,由类创建,并使用与类相同的...
    99+
    2024-05-08
    c++
  • C#的对象类型是什么
    本文小编为大家详细介绍“C#的对象类型是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#的对象类型是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。对象(Object)类型对象(Object)类型&nb...
    99+
    2023-06-17
  • JavaSE的类和对象是什么
    这篇文章主要介绍了JavaSE的类和对象是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.基本概念首先我们需要弄清楚几个概念:面向对象是什么、类是什么、对象又是什么?还...
    99+
    2023-06-29
  • C++ set到底是什么
    目录1、set是什么2、set有什么用1、set是什么 如果大家学过几门编程语言,会发现各大语言的特性虽然迥异,但是总有几个东西反复出现刷存在感。它们在各个语言当中的名字虽然不太一样...
    99+
    2024-04-02
  • 一文搞懂Java中的抽象类和接口到底是什么
    目录什么是抽象类抽象类在实现多态中的意义接口是什么通过接口实现多态今天让我们继续学习java,看看java中的抽象类和接口到底是什么? 什么是抽象类 我们之前学过什么是类,那么抽象...
    99+
    2024-04-02
  • 【C++】类和对象(四)
    1.初始化列表: 1.1为什么要有初始化列表? 实验代码如下: class A{public: int _a1;//声明 int _a2; const int _x;};int main(){ A aa;//...
    99+
    2023-08-30
    c++ java 算法
  • 【C++】类和对象(三)
    类和对象(三) 拷贝构造函数: 当我们想要将一个已确定的类变量的值拷贝给另外一个相同类型的类变量,有什么快捷的方法吗? 就相当于定义了一个int类型的i=10,想将i复制给一个刚初始化的遍历j,int...
    99+
    2023-08-31
    c++ java 开发语言
  • Python中的类到底是什么
    这篇文章主要介绍“Python中的类到底是什么”,在日常操作中,相信很多人在Python中的类到底是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中的类到底是什么”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-15
  • Java8中的接口和抽象类到底有什么区别
    本篇内容主要讲解“Java8中的接口和抽象类到底有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java8中的接口和抽象类到底有什么区别”吧!区别1:首先抽象类是一个“类”,而接口只是一...
    99+
    2023-06-16
  • python对象和类的关系是什么
    在Python中,类是对象的蓝图或模板。对象是类的实例化,即通过类创建的具体实体。类定义了对象的属性(变量)和行为(方法)。它可以看...
    99+
    2023-08-14
    python
  • C++ 再识类和对象
    目录类的6个默认成员函数构造函数1.概念2.特性隐式构造函数无参和全缺省的函数均为默认构造函数成员变量的命名风格补充析构函数1.概念2.特性c++编译器在对象生命周期结束时自动调用析...
    99+
    2024-04-02
  • C++类和对象补充
    目录一. 再看构造函数1.函数体内赋初值2.初始化列表几点注意3.explicit关键字二.static成员1.概念2.特性三.友元1.友元函数2.友元类四.内部类总结一. 再看构造...
    99+
    2024-04-02
  • C++初识类和对象
    目录一.初步认识面向过程和面向对象二.类的引入三.类的定义1.定义和声明全部放在类体中,需要注意的是:2.声明与定义分离四.类的访问限定符及封装1.访问限定符2.封装五.类的作用域六...
    99+
    2024-04-02
  • python中类和对象的关系是什么
    在Python中,类是对象的蓝图或模板,而对象是类的实例。类定义了对象的属性和方法。通过创建一个对象,可以使用类中定义的属性和方法。...
    99+
    2023-09-15
    python
  • C++中怎么创建类和对象
    在C++中,可以通过关键字class来创建类,通过关键字new来创建对象。 以下是一个简单的示例: #include <ios...
    99+
    2024-03-11
    C++
  • Swift类和对象的底层探索分析
    目录引言1. 对象1.1 上层代码中查找1.1.1 查找对象调用方法1.1.2 设置符号断点1.2 swift_allocObject1.3 swift_showAlloc1.4 查...
    99+
    2024-04-02
  • C++的对象特性和友元是什么
    这篇文章主要介绍了C++的对象特性和友元是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C++的对象特性和友元是什么文章都会有所收获,下面我们一起来看看吧。对象特征构造函数和析构函数对象的初始化和清理也是两...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作