APP下载

C++程序设计中基于构造函数的对象初始化方法研究

2019-05-23高葵付晓翠李蔚妍

电脑知识与技术 2019年8期
关键词:中类调用程序设计

高葵 付晓翠 李蔚妍

摘要:C++程序设计中声明对象时,如果需要对象的初始化,不能贸然指定对象的初始值,否则不仅不能实现初始化,还会引起编译时的语法错误。我们可以通过编写初始化程序-构造函数来实现对象的初始化。

关键词:C++;构造函数

中图分类号:TP311 文献标识码:A

文章编号:1009-3044(2019)08-0234-02

开放科学(资源服务)标识码(OSID):

Research on Object Initialization Method Based on Constructor in C++ Programming

GAO Kui, FU Xiao-cui, LI Wei-yan

(Information Science and Engineering, Shandong Agricultural University, Taian 271000, China)

Abstract: When declaring an object in C++ programming, if the object needs to be initialized, the initial value of the object cannot be specified rashly, otherwise it will not only fail to achieve initialization, but also cause syntax errors at compile time. We can implement object initialization by writing initializers - constructors.

Key words: C++; constructors

1 背景

对于学习C++程序设计的人员来说,理解程序中的基本概念是良好程序设计的开始。只有理解了这些概念,在解决实际问题的过程当中,才能得心应手,游刃有余。C++程序中声明对象时,对象初始化跟普通变量不同,不能直接在声明变量时直接初始化,而是需要由编写的初始化程序来完成。这个初始化程序就是构造函数。理解构造函数的定义,正确进行对象的初始化,才能保证程序的正常运行。

2 函数介绍

构造函数的作用是在对象被创建时使用特定的值去构造对象,或者说将对象初始化为一个特定的状态。

与其他函数相比有如下不同:

1)构造函数的名字必须与类名相同。

2)函数没有返回类型—包括void。

3)在创建对象时,构造函数被自动隐含调用,它的作用就是初始化对象。

使用时注意以下几点:

1)如果类中没有构造函数,编译器会自动生成一个默认构造函数,没有参数也不做任何事情的构造函数。

2)若声明了构造函数,编译器就会在建立新对象时自动调用构造函数。

3)若自定义的构造函数有形参,则声明对象时就必须给出初始值进行初始化。

4)构造函数可以被重载(即可以有多个同名的构造函数),方便我们用不同初始数据创建对象。

我们可以根据构造函数的不同形式,选择合适的形式将对象初始化成特定的状态。请看如下例子:

例题1:

#include

using namespace std;

class Clock

{

public:

void SetTime() {hour=10; min=42; sec=30;} //无构造函数,使用公有函数设置时间

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1; //只能如此声明对象,调用默认构造函数,不可以进行初始化。

t1.SetTime();

cout<<"現在时间是:"<

t1.showtime();

}

运行结果:

现在时间是:

10:42:30

分析:本程序中类的定义没有声明构造函数,在主程序中声明对象时自动调用默认构造函数,无法进行初始化,因为默认构造函数什么也不做。定义了公有函数SetTime来进行时间的设置,完成对象的数据成员赋值。

例题2:

#include

using namespace std;

class Clock

{

public:

Clock(int newh,int newm,int news) {hour=newh; min=newm; sec=news;}

//定义带参数构造函数

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1 (12,45,56); //只能如此声明对象,调用带参数构造函数,不可以省略初始值。

cout<<"默认时间是:"<

t1.showtime();

}

运行结果:

默认时间是:

12:45:56

分析:本程序中类的定义声明了带参数的构造函数,在主程序中声明对象时必须给出对象的初始值进行初始化。

例题3:

#include

using namespace std;

class Clock

{

public:

Clock( ) { hour=0; min=0; sec=0; } //无参数构造函数

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1; //只能如此声明对象,调用无参数构造函数

cout<<"默认时间是:"<

t1.showtime();

}

运行结果:

默认时间是:

0:0:0

分析:本程序中类的定义声明了无参数的构造函数,在主程序中声明对象时调用无参数构造函数进行初始化,不能给出对象的初始值。

例题4:

#include

using namespace std;

class Clock

{

public:

Clock(int newh,int newm,int news) {hour=newh; min=newm; sec=news;}//带参数构造函数

Clock(int newh=1,int newm=1,int news=1) { } //带默认参数构造函数

void showtime(){cout<

private:

int hour,min,sec;

};

void main()

{

Clock t1(13,45,45),t2;

//可以用两种方式聲明类的对象,有初始值的和无初始值的,分别调用前面两种形式的构造函数。

cout<<"默认时间是:"<

t1.showtime();

t2.showtime();

}

运行结果:

默认时间是:

13:45:45

1:1:1

分析:本程序中类的定义声明了带参数和带默认参数的构造函数,构造函数被重载。在主程序中声明对象时可以用两种方式声明类的对象,调用带参数和带默认参数的构造函数进行初始化。

3 总结

通过以上例子和分析可以得出如下结论:

1)构造函数有默认的构造函数和声明的构造函数。

2)类中声明了构造函数的,创建对象时一定要初始化。

3)构造函数的参数形式多种多样,分别有参数的,无参数的,带默认值的等。

4)声明对象时一定要考虑构造函数的具体定义形式,给出对象的正确初始化。有参数的要给出初始化值,无参数的和带默认值的不用给出初始值。

4 结束语

通过使用构造函数,可以实现对象的初始化,通过举例,总结了使用的规则和注意事项,提出了如何正确使用它们进行对象的初始化。

参考文献:

[1] 谭浩强. C++程序设计[M]. 北京: 清华大学出版社, 2018.

[2] 郑莉. C++程序设计[M]. 4版. 北京: 清华大学出版社, 2013.

[3] 梁勇. C++程序设计[M]. 北京: 机械工业出版社, 2008.

【通联编辑:谢媛媛】

猜你喜欢

中类调用程序设计
基于Visual Studio Code的C语言程序设计实践教学探索
核电项目物项调用管理的应用研究
从细节入手,谈PLC程序设计技巧
LabWindows/CVI下基于ActiveX技术的Excel调用
基于系统调用的恶意软件检测技术研究
高职高专院校C语言程序设计教学改革探索
知识产权专业人员正式纳入国家职业分类
PLC梯形图程序设计技巧及应用
利用RFC技术实现SAP系统接口通信
相空间中类分数阶变分问题的Noether对称性与守恒量