千家信息网

C++类的定义和对象的创建是怎样的

发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章给大家介绍C++类的定义和对象的创建是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。前言:类和对象是 C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言,
千家信息网最后更新 2025年01月31日C++类的定义和对象的创建是怎样的

这篇文章给大家介绍C++类的定义和对象的创建是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

前言:

类和对象是 C++ 的重要特性,它们使得 C++ 成为面向对象的编程语言,可以用来开发中大型项目,本节重点讲解类和对象的语法,如果你对它们的概念还不了解,请先阅读《C++类和对象到底是什么》。

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。

有些教程将类的成员变量称为类的属性(Property),将类的成员函数称为类的方法(Method)。在面向对象的编程语言中,经常把函数(Function)称为方法(Method)。

与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,或者说是通过类这种数据类型创建出来的一份实实在在的数据,所以占用内存空间。

1、类的定义

类是用户自定义的类型,如果程序中要用到类,必须提前说明,或者使用已存在的类(别人写好的类、标准库中的类等),C++语法本身并不提供现成的类的名称、结构和内容。

一个简单的类的定义:

class Student{public:    //成员变量    char *name;    int age;    float score;    //成员函数    void say(){        cout<

class是 C++ 中新增的关键字,专门用来定义类。Student是类的名称;类名的首字母一般大写,以和其他的标识符区分开。{ }内部是类所包含的成员变量和成员函数,它们统称为类的成员(Member);由{ }包围起来的部分有时也称为类体,和函数体的概念类似。public也是 C++ 的新增关键字,它只能用在类的定义中,表示类的成员变量或成员函数具有"公开"的访问权限,初学者请先忽略该关键字,

注意:在类定义的最后有一个分号;,它是类定义的一部分,表示类定义结束了,不能省略。
整体上讲,上面的代码创建了一个 Student 类,它包含了 3 个成员变量和 1 个成员函数。

类只是一个模板(Template),编译后不占用内存空间,所以在定义类时不能对成员变量进行初始化,因为没有地方存储数据。只有在创建对象以后才会给成员变量分配内存,这个时候就可以赋值了。

类可以理解为一种新的数据类型,该数据类型的名称是 Student。与 charintfloat 等基本数据类型不同的是,Student 是一种复杂数据类型,可以包含基本类型,而且还有很多基本类型中没有的特性,以后大家会见到。

2、创建对象

有了 Student 类后,就可以通过它来创建对象了,例如:

Student liLei;  //创建对象

Student是类名,liLei是对象名。这和使用基本类型定义变量的形式类似:

int a;  //定义整型变量

从这个角度考虑,我们可以把 Student 看做一种新的数据类型,把 liLei 看做一个变量。

在创建对象时,class 关键字可要可不要,但是出于习惯我们通常会省略掉 class 关键字,例如:

class Student LiLei;  //正确Student LiLei;  //同样正确

除了创建单个对象,还可以创建对象数组:

Student allStu[100];

该语句创建了一个 allStu 数组,它拥有100个元素,每个元素都是 Student 类型的对象。

3、访问类的成员

创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员类似,如下所示:

#include using namespace std;//类通常定义在函数外面class Student{public:    //类包含的变量    char *name;    int age;    float score;    //类包含的函数    void say(){        cout<

运行结果:

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

stu 是一个对象,占用内存空间,可以对它的成员变量赋值,也可以读取它的成员变量。

类通常定义在函数外面,当然也可以定义在函数内部,不过很少这样使用。

4、使用对象指针

C语言中经典的指针在 C++ 中仍然广泛使用,尤其是指向对象的指针,没有它就不能实现某些功能。

上面代码中创建的对象 stu 在栈上分配内存,需要使用&获取它的地址,例如:

Student stu;Student *pStu = &stu;

pStu 是一个指针,它指向 Student 类型的数据,也就是通过 Student 创建出来的对象。

当然,你也可以在堆上创建对象,这个时候就需要使用前面讲到的new关键字(C++ newdelete运算符简介),例如:

Student *pStu = new Student;

在栈上创建出来的对象都有一个名字,比如 stu,使用指针指向它不是必须的。但是通过 new 创建出来的对象就不一样了,它在堆上分配内存,没有名字,只能得到一个指向它的指针,所以必须使用一个指针变量来接收这个指针,否则以后再也无法找到这个对象了,更没有办法使用它。也就是说,使用 new 在堆上创建出来的对象是匿名的,没法直接使用,必须要用一个指针指向它,再借助指针来访问它的成员变量或成员函数。

栈内存是程序自动管理的,不能使用 delete 删除在栈上创建的对象;堆内存由程序员管理,对象使用完毕后可以通过 delete 删除。在实际开发中,new 和 delete 往往成对出现,以保证及时删除不再使用的对象,防止无用内存堆积。

栈(Stack)和堆(Heap)是 C/C++ 程序员必须要了解的两个概念,我们已在《C语言内存精讲》专题中进行了深入讲解,相信你必将有所顿悟。

有了对象指针后,可以通过箭头->来访问对象的成员变量和成员函数,这和通过结构体指针来访问它的成员类似,请看下面的示例:

pStu -> name = "小明";pStu -> age = 15;pStu -> score = 92.5f;pStu -> say();下面是一个完整的例子:#include using namespace std;class Student{public:    char *name;    int age;    float score;    void say(){        cout< name = "小明";    pStu -> age = 15;    pStu -> score = 92.5f;    pStu -> say();    delete pStu;  //删除对象    return 0;}

运行结果:

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

虽然在一般的程序中无视垃圾内存影响不大,但记得 delete 掉不再使用的对象依然是一种良好的编程习惯。

关于C++类的定义和对象的创建是怎样的就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

对象 成员 变量 函数 类型 内存 指针 数据 C++ 关键 关键字 年龄 成绩 指向 程序 小明 空间 结构 语言 内容 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 关于网络安全的画儿童 藏文软件开发有何新进展 我的世界命令方块怎么设置服务器 计算机网络技术就业前景报告 数据库系统具有安全性 深圳市软件开发费人员用标准 预判服务器是什么意思 怎样附加自己做的数据库 业务软件开发工程师 贵阳市网络安全监测中心 计算机网络技术的工作要求 csmar数据库 杭州编程软件开发服务 软件开发在大城市薪资水平 郴州市学计算机软件开发学校 7525服务器价格 网络安全所采用的策略 超图软件数据库 自学网络安全需要哪些基础 安卓手机好用的远程服务器 数据库系统阶段的最大改进是 网络犯罪与网络安全的关系 互联网科技金融上市了吗 河北口碑好的软件开发商家 一个软件开发的好处 云服务器平台 显卡 数字化道德与法制展厅软件开发 金山区使用软件开发口碑推荐 小型服务器机房多少钱 建立数据库详细步骤
0