水平综合辅导:谈谈c++的初始化工作(下)

水平综合辅导:谈谈c++的初始化工作(下),第1张

水平综合辅导:谈谈c++的初始化工作(下),第2张

把(1)中的代码换为注释部分,或许您一时还认识不到会有什么发生,但最终是通不过的,调试抛出异常,信息如下:
未处理的“System.Runtime.InteropServices.SEHException”类型的异常出现在 TestInit.exe 中
其他信息:外部组件发生异常。
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application’s support team for more information.
Press any key to continue

我想,您回头再细看的话,就会明白为什么如此了(我们写程序一定要追问到底:)。
我们今天要谈的是,一些变量只有的初始化形式,通过例子,告诉您要特别注意。然后,我们就一步一步,来看资源浅拷贝的问题。我相信初学c++的同学,会对“拷贝函数”有些疑问,它就是为了解决上述问题的;但事实上,还有一个隐藏的地方,今天我也想给您指出。
这些程序,可是我特意设计的哦。希望可以很方便的认识问题所在,与解决之道。
首先,看第一个例子。在类中,这两类变量:
e.g.
Name &name; //引用
const int ID; //常量
它们的初始化形式是的。而且必须由您来初始化。
看下面的程序:

//human.h
#pragma once
class Name
{
char *name;
public:
//...
};
class Human
{
Name &name;
const int ID;//每个人都的标志号
//...
public:
Human(void);
~Human(void);

//...
};
//human.cpp
#include "human.h"
#using
//默认的构造函数
Human::Human(void)
{
}
Human::~Human(void)
{
}
写一个主文件测试。
但调试出错,错误信息文件为:
/*----------------------------------------------------------------------------
//Human:error file
------ 已启动生成:项目:TestInit, 配置:Debug Win32 ------
正在编译...
Human.cpp
Human.cpp(5) : error C2758: “Human::name” : 必须在构造函数基/成员初始值设定项列表中初始化
e:NETSmall_codeTestInitHuman.h(13) : 参见“Human::name”的声明
Human.cpp(5) : error C2758: “Human::ID” : 必须在构造函数基/成员初始值设定项列表中初始化
e:NETSmall_codeTestInitHuman.h(14) : 参见“Human::ID”的声明
fmain.cpp
Date.cpp
正在生成代码...
生成日志保存在“file://e:NETSmall_codeTestInitDebugBuildLog.htm”中
TestInit - 2 错误,0 警告

---------------------- 完成 ---------------------
生成:0 已成功, 1 已失败, 0 已跳过
--------------------------------------------------------------------------------
*/

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 水平综合辅导:谈谈c++的初始化工作(下)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情