美文网首页
软考C++基础知识(2)

软考C++基础知识(2)

作者: Ritchie_Li | 来源:发表于2022-10-02 22:13 被阅读0次

函数的定义和声明

①函数的定义

函数是一个命名的程序代码块,是程序完成其操作的场所,是将功能重复的程序段抽象出来所形成一个独立的、可重复使用的功能模块。

定义函数的一般格式为:

返回类型 函数名 (数据类型1 参数1, 数据类型2 参数2,... )

{

   语句序列;

}

②C++中,函数原型声明原则

•如果函数定义在先,调用在后,调用前可以不必声明; 如果函数定义在后,调用在先,调用前必须声明。

•在程序设计中,为了使程序设计的逻辑结构清晰,一般将主要的函数放在程序的起始位置声明,这样也起到了列函数目录的作用。

声明函数原型的形式如下:

返回类型 函数名 (数据类型1 参数1, 数据类型2 参数2,... );

例如:

int max( int x,int y ) ;

int max( int,int ) ;

③函数重载

各个重载函数的返回类型可以相同,也可以不同。但如果函数名相同、形参表也相同,仅仅是返回类型不同,则是非法的。在编译时会认为是语法错误。

类的基本问题

① 类的定义, 简单讲,类是一个包含函数的结构体。因此,类的定义与结构类型的定义相似,其格式如下:

class 类名

{

public:

公有数据成员或公有函数成员的定义;

protected:

保护数据成员或保护函数成员的定义;

private:

私有数据成员或私有函数成员的定义;

};

② 成员函数

成员函数描述的是类中的数据成员实施的操作。成员函数的定义、声明格式与非成员函数(全局函数)的格式相同。成员函数可以放在类中定义,也可以放在类外。放在类中定义的成员函数为内联(inline)函数。

C++可以在类内声明成员函数的原型,在类外定义函数体。这样做的好处是相当于在类内列了一个函数功能表,使我们对类的成员函数的功能一目了然,避免了在各个函数实现的大堆代码中查找函数的定义。在类中声明函数原型的方法与一般函数原型的声明一样,在类外定义函数体的格式

如下:

返回值类型 类名 :: 成员函数名(形参表)

{

函数体;

}

::是类的作用域分辨符,用在此处,放在类名后成员函数前,表明后面的成员函数属于前面的那个类。

③ 对象的建立与使用

建立对象后,就可以通过对象存取对象中的数据成员及调用成员函数。存取语法如下:

对象名.属性

对象名.成员函数名(实参1, 实参2,…,)

④ 构造函数与析构函数

在定义一个对象的同时,希望能给它的数据成员赋初值――对象的初始化。在特定对象使用结束时,还经常需要进行一些清理工作。C++程序中的初始化和清理工作分别由两个特殊的成员函数来完成,它们就是构造函数和析构函数。

▼构造函数(constructor)

构造函数是与类名相同的,在建立对象时自动调用的函数。如果在定义类时,没有为类定义造函数,编译系统就生成一个默认形式的隐含的的构造函数,这个构造函数的函数体是空的,因此默认构造函数不具备任何功能。构造函数是类的一个成员函数,除了具有一般成员函数的特征之外,还归纳出如下特殊的性质:

•构造函数的函数名必须与定义它的类同名。

•构造函数没有返回值。如果在构造函数前加void是错误的。

•构造函数被声明定义为公有函数。

•构造函数在建立对象时由系统自动调用。

▼析构函数(destructor)

也译作拆构函数,是在对象消失之前的瞬间自动调用的函数,其形式是:

~构造函数名( );

析构函数具有以下特点:

•析构函数没有任何参数,不能被重载,但可以是虚函数,一个类只有一个析构函数。

•析构函数没有返回值。

•析构函数名与类名相同,但在类名前加上一个逻辑非运算符“~”,以示与构造函数对比区别。

•析构函数一般由用户自己定义,在对象消失时由系统自动调用,如果用户没有定义析构函数,系统将自动生成一个不做任何事的默认析构函数。

⑤拷贝构造函数

拷贝构造函数是与类名相同,形参是本类的对象的引用的函数,在用已存在对象初始化新建立对象时调用。

类的拷贝构造函数一般由用户定义,如果用户没有定义拷贝构造函数,系统就会自动生成一个默认函数,这个默认拷贝构造函数的功能是把初始值对象的每个数据成员的值依次复制到新建立的对象中。因此,也可以说是完成了同类对象的克隆(Clone)。这样得到的对象和原对象具有完全相同的数据成员,即完全相同的属性。

定义一个拷贝构造函数的一般形式为:

类名(类名& 对象名)

{

};

注意:

•在重新定义拷贝构造函数后,默认拷贝构造函数与默认构造函数就不存在了,

•如果在此时调用默认构造函数就会出错。

•在重新定义构造函数后,默认构造函数就不存在了,但默认拷贝构造函数还存在。

•在对象进行赋值时,拷贝构造函数不被调用。此时进行的是结构式的拷贝。

⑥ 对象指针

对象如同一般变量,占用一块连续的内存区域,因此可以使用一个指向对象的指针来访问对象,即对象指针,它指向存放该对象的地址。可用类来定义对象指针变量,通过对象指针来访问对象的成员。

•对象指针语法定义对象指针遵循一般指针变量的各种规则,其语法定义形式如下:

类名 *对象指针名;

如同通过对象名访问对象的成员一样,使用对象指针也只能访问该类的公有数据成员和函数成员,但与前者使用“.”运算符不同,对象指针采用“->”运算符访问公有数对象指针名->数据成员名,或:对象指针名->成员函数名(参数表).

•对象指针应用

⑦ 对象引用

对象引用就是对某类对象定义一个引用,其实质是通过将被引用对象的地址赋给引用对象,使二者指向同一内存空间,这样引用对象就成为了被引用对象的“别名”。

•对象引用的定义对象引用的定义方法与基本数据类型变量引用的定义是一样的。定义一个对象引用,并同时指

向一个对象的格式为:

类名 & 对象引用名=被引用对象;

•对象引用的使用格式为:对象引用名.数据成员名 或:对象引用名.成员函数名(参数表)

•对象引用的应用

⑧ 静态数据成员与静态成员函数

▼静态数据成员

静态数据成员是类的数据成员的一种特例,采用static关键字来定义,属于类属性,每个类只有一个拷贝,由该类的所有对象共同维护和使用,从而实现了同类的不同对象之间的数据共享。

▼静态成员函数

静态成员函数为类的全体对象而不是部分对象服务,与类相联系而不与类的对象联系,因此访问静态函数成员时,可以直接使用类名。格式如下:

•通过类名调用静态成员函数

类名::静态成员函数;

•通过对象调用静态成员函数,格式为:对象. 静态成员函数

相关文章

  • 软考C++基础知识(2)

    函数的定义和声明 ①函数的定义 函数是一个命名的程序代码块,是程序完成其操作的场所,是将功能重复的程序段抽象出来所...

  • 软考C++基础知识

    C++语言是从C语言发展演变而来的,C++包含了整个C,C是建立C++的基础。C++包括C的全部特征、属性和优点,...

  • 软考

    1.软件设计师 1.参考1 2.信息系统项目管理师

  • 软考

    软考全称计算机技术与软件专业技术资格(水平)考试,软考既是职业资格考试,又是职称资格考试。 软考是一个神奇又特别的...

  • 软考

    为期一周的软考结束了。从上个月报名,,到今天考试,自己加起来的准备时间大概有一周。先是看教学视频,花了一大半时...

  • 软考-程序语言基础知识(上)

    1、简单算术表达式的结构可以用下面的上下文无关文法进行描述(E为开始符号),________是符合该文法的句子。E...

  • C++ Builder 参考手册

    1. 基础知识 1.1. 语言相关的基础知识 C++ Builder 的 PME 架构[https://www.j...

  • 软考各级别考试难度对比

    从软考历年的合格率来看,软考的通过率并不是很高,这可能跟软考报名没有设很高的门槛也是有一定关系的。 由于软考向社会...

  • Allen Kashiwa的游戏开发信息

    1 基础知识与通用技能 1.1 语言相关 1.1.1 C/C++ C++ Primer 1.1.2 C# C# 编...

  • 腾讯实习生招聘笔试总结

    刚刚结束了腾讯的在线笔试,写篇文章来总结一下被虐的经历。 考的内容都是计算机专业的基础知识,囊括了C、C++、数据...

网友评论

      本文标题:软考C++基础知识(2)

      本文链接:https://www.haomeiwen.com/subject/rqssartx.html