首页 > 编程语言 >C++语言类和对象介绍和示例

C++语言类和对象介绍和示例

时间:2022-11-22 23:04:08浏览次数:39  
标签:语言 函数 示例 对象 成员 C++ C语言 变量


 

C++ 类和对象

C语言中结构体(struct)是一种构造类型,可以包含若干成员变量,可以通过结构体来定义结构体变量。

C++中的类(class)可以看成结构体的升级版,类也是一种构造类型,但是进行了一些扩展,类的成员不但可以有变量,还可以有函数,通过类定义出来的变量也有特定的称呼,叫做对象。

       示例(book205.cpp)

       

C++语言类和对象介绍和示例_类

       运行结果

       

C++语言类和对象介绍和示例_类_02

class是C++的关键字,用于定义类,就像结构体中的sturct。

public也是C++中的关键字,各位先忽略它,以后会深入讲解,先这么抄就行。

C语言中的 struct 只能包含成员变量,而C++中的 class 除了可以包含成员变量,还可以包含成员函数,例如Show()。在C语言中,结构体和函数是分离的,通过函数的参数传递变量;而在C++中,成员变量和成员函数都放在class内部声明,是聚集在一起的,看起来更像一个整体,成员函数可以直接访问成员变量,不必传递参数。

类的成员变量和普通变量一样,也有数据类型和名称。与结构体一样,在定义类的时候也不能对成员变量赋值。

int CGirl::Show()是类的成员函数的定义语法,在函数前加上类的名称和两个冒号,表示该函数是这个类的成员函数,函数的返回值、参数等语法和使用方法与C语言的普通函数相同。

在C++中,用类定义一个类变量叫做创建(或实例化)一个对象;某些资料中,把成员变量称为属性(property);成员函数称为方法(method)。在我的教程中,将采用类、创建对象、成员变量和成员函数的称呼。

创建对象以后,可以使用点号.来访问成员变量和成员函数,这和通过结构体变量来访问它的成员一样。类的成员变量和成员函数的作用域和生命周期由对象的作用域和生命周期决定。

对象数组

对象可以被定义成数组对象,本质上与其它类型的数组变量没有区别。

CGirl Girl[10];

strcpy(Girl [0].m_name,”杨玉环”);

Girl [0].m_age=18;

……

在实际开发中,我们很少用对象数组。

对象的指针

类是一种自定义的数据类型,对象也是内存变量,也有内存地址,当然也就有了类的指针。

在指针章节中我们已经学习过,采用不同数据类型的指针指向不同数据类型的变量的地址,这一规则也适用于对象。如下:

CGirl queen;

CGirl *pst=& queen;

通过类指针可以访问对象的成员,一般形式为:

(*pointer).memberName

或者:

pointer->memberName

第一种写法中,圆点.的优先级高于*,(*pointer)两边的括号不能少。如果去掉括号写作*pointer.memberName,那么就等效于*(pointer.memberName),这样意义就完全不对了。

第二种写法中,->是一个新的运算符,习惯称它为“箭头”,有了它,可以通过对象的指针直接访问对象的成员。

上面的两种写法是等效的,我们通常采用后面的写法,这样更加直观。

对象作为函数的参数

与结构体一样,对象可以作为函数参数传递,最好的办法也是传递对象的地址。

对象的初始化和占用内存的大小

按我们以前的经验,定义的变量使用前要初始化,C语言的基本数据类型可以直接赋值0,字符串和结构体用memset函数初始化,那么类的对象呢?对象不能用memset初始化,具体做法我们以后再介绍。

对象可以用sizeof运算符获取占用内存的大小。

小结

在这个阶段,类就是一个有成员函数的结构体,定义的关键字和语法不同,使用方法完全相同。

各位可能会认为类好像没什么用,不用类也可以活得很好,这不一定,因为我现在只是用尽可能简单的方式介绍类的相关知识,在接下来的章节中也是如此,如果我把实际开发的方法搬到教材中,大家可能接受不了,在实际开发中,某些类的代码非常长,类的定义就有好几页,还不包括成员函数体。希望各位保持好的心态,循序渐进的学习。

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

类是一个通用的概念,C++、Java、C#、PHP 等很多编程语言中都支持类,都可以通过类创建对象。因为 C++、Java、C#、PHP 等语言都支持类和对象,所以使用这些语言编写程序也被称为面向对象编程,这些语言也被称为面向对象的编程语言。C语言因为不支持类和对象的概念,被称为面向过程的编程语言。

在C语言中,我们会把重复使用或具有某项功能的代码封装成一个函数,而在C++中,多了一层封装,就是类(class),不要小看类(class)这一层封装,它有很多特性,极大地方便了程序员的开发,也让C++成为面向对象的语言。

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

 

版权声明

作者:码农有道

如果文章有错别字,或者内容有误,或其他的建议或意见,请您留言指正,非常感谢!!!

 

标签:语言,函数,示例,对象,成员,C++,C语言,变量
From: https://blog.51cto.com/u_13748800/5878707

相关文章

  • C++语言函数重载详解和示例
     C++函数重载的概念在实际开发中,有时候我们需要实现几个功能类似的函数,只是有些细节不同。例如把变量的值写入文件,变量的类型int、long、double、char,需要通过参数把变量......
  • 从C语言到C++语言
      ​​C++​​​ 读作“C加加”,是“CPlusPlus”的简称。顾名思义,C++是在​​C语言​​的基础上增加新特性。从语法上看,C语言是C++的一部分,C语言代码几乎不用修改就......
  • C语言系统错误信息
         我们在写程序的时候需要调用C语言提供的库函数,并通过函数的返回值判断调用是否成功。其实在C语言中,还有一个全局变量errno,存放了函数调用过程中产生的错误码。......
  • C语言目录文件操作补充
     本章节补充一些目录和文件操作的更多知识,因为这些知识涉及到时间操作,所以放在时间操作之后的章节中介绍。access库函数access函数用于判断当前操作系统用户对文件或目录的......
  • C 语言的数据类型
     C语言的数据类型1、基本类型    C语言的最基本的数据类型,包括字符型、整数型、浮点型。    字符型(char)    描述单个字符,用单引号包含起来,如'a'、'A......
  • C语言常量和变量
     一切都是数据    对计算机来说,图片、文字、音乐、视频等都是数据,在计算机中以二进制的0和1存储,数据量越大,0和1就越多。    数据分为静态数据和动态数据。 ......
  • C/C++语言学习的策略
    断章取义C语言出现50年了,有很多内容已过时,至少有百分之二十的内容没有实用价值。C++更过份,对程序员来说,至少有百分之七十的内容没有实用价值。Linux系统也是,命令上千个,对程......
  • C/C++程序员如何学习英语
       英语是程序员的重要技能,有多重要?比较重要,极其重要吗?也不一定。    我是高中毕业,在刚开始学习计算机的一两年,曾经买过许国璋英语四级和计算机英文方面的书籍......
  • Go语言SQL语句到结构体的转换命令行工具
    学习:SQL语句到结构体的转换|Go语言编程之旅(eddycjy.com)目标:SQL表转换为Go语言结构体可以在线体验这个过程:SQL生成GO语言结构体-支持批量处理(tl.beer)MySQL数......
  • C语言程序的基本结构
    文章目录​​一、C语言基础知识的学习方法​​​​二、C语言程序开发的流程​​​​三、安装C语言的编译器​​​​四、C程序的基本结构​​​​1、程序的注释​​​​2、预......