14.9 节练习

练习14.45 编写类型转换运算符将一个Sales_data对象分别转换成string和double,你认为这些运算符的返回值应该是什么?

    operator std::string() const { return isbn(); }
    operator double() const { return revenue; }


练习14.46 你认为应该为Sale_data应该定义上面两种类型转换运算符吗?应该把它们声明成explicit的吗?为什么?

应该。类型转换应该是用户有意识地进行,显示的类型转换可以避免因为意外带来的不好后果。


练习14.47 说明下面这两个类型转换符的区别。

struct Integral {
	operator const int();
	operator int() const;
};
第一个是返回类型是常量。

第二个是不修改接受类型转换的对象。


练习14.50 在初始化ex1和ex2的过程中,可能用到哪些类类型的转换序列呢?说明初始化是否正确并解释原因。

struct LongDouble {
	LongDouble(double = 0.0);
	operator double();
	operator float();
};
LongDouble ldobj;
int ex1 = ldobj;
float ex2 = ldobj;
对象的初始化是正确的。

对于ex1定义了多个从LongDouble到 int的转换函数。

对于ex2则有精确匹配的float转换函数。


练习14.51 在调用calc的过程中,可能用到哪些类型转换序列呢?说明最佳可行函数是如何被选出来的。

void calc(int);
void calc(LongDouble);
double dval;
calc(dval);   //哪个calc?
转换序列double->int或者double->LongDouble(double(daval))。

最佳可行函数是第一个。

在调用重载函数时,如果需要额外的标准类型转换,则该转换的级别只有当所有可行函数都请求同一个用户定义的类型转换才有用。如果所需的用户定义的类型转换不止一个,则该调用具有二义性。


练习14.52 在下面的加法表达式中分别选用了哪个operator+?列出候选函数、可行函数以及为每个可行函数的实参执行的类型转换。

struct LongDouble {
	LongDouble operator+(const SamallInt&);
	LongDouble(double = 0.0);
	operator double();
	operator float();
};
LongDouble operator+(LongDouble &, double);
SmallInt si;
LongDouble ld;
ld = si + ld;
ld = ld + si;

第一个加法:

(a) operator+(int,double)<built-in>

(b) operator+(int, float)<built-in>

第二个加法:

(a) double operator+(int)<built-in>

(b) float operator+(int)<built-in>


练习14.53 假设我们已经定义了如522页的SmallInt,判断下面的加法表达式是否合法。如果合法,使用了哪个加法运算符?如果不合法,应该怎样修改代码使其合法?

SmallInt sl;
double d = sl + 3.14;
不合法,会产生二义性。

(a)  operator+(int, doule)<built-in>

(b) operator+(int, int) <built-in>

使用显示转换进行修改。

double d = static_cast<double>(s1) + 3.14; 


### 回答1: Advanced Installer 14.9是一种领先的安装程序制作工具,它可以帮助开发人员创建发布Windows平台上的安装包。它提供了丰富的功能工具,使得创建通用安装程序变得更加容易高效。 Advanced Installer 14.9使开发人员能够快速创建自定义安装程序,从而简化软件部署过程。它提供了直观的用户界面,使得创建安装包所需的各种步骤都变得非常简单。开发人员可以通过拖放操作来添加文件、快捷方式、注册表项其他必要的组件,而无需编写复杂的脚本。 此外,Advanced Installer 14.9还具有自定义安装界面的能力,开发人员可以根据自己的品牌需求来设计安装界面。它还提供了多种可用的主题模板,以帮助开发人员快速生成专业的安装界面。它还支持多语言界面,可以方便地为不同地区提供本地化的安装体验。 Advanced Installer 14.9还具有强大的配置选项,可以满足开发人员的各种需求。它支持自定义安装选项脚本,可以根据用户的选择来安装、卸载配置软件。它还集成了许多高级功能,如安装前检查、许可证管理文件关联等,使得软件的安装过程更加灵活智能。 总之,Advanced Installer 14.9是一款功能强大且易于使用的安装程序制作工具。它可以帮助开发人员简化软件部署过程,并提供丰富的功能选项来满足各种需求。无论是个人开发者还是企业开发团队,都可以从Advanced Installer 14.9中受益,并将其用于创建高质量的安装包。 ### 回答2: Advanced Installer 14.9 是一款功能强大的安装程序制作工具。它提供了一套全面的功能,使得制作安装程序变得更加简单高效。Advanced Installer 14.9 可以帮助开发者快速并且容易地创建可靠的 Windows Installer(MSI)安装程序。 Advanced Installer 14.9 具备众多强大的特性。其中包括可视化的界面编辑器,使得用户能够轻松地设计定义安装界面。它还支持多种安装脚本语言,如MSI 变量安装脚本,使得开发者能够自定义安装过程逻辑。此外,Advanced Installer 14.9 还提供了丰富的预定义操作,比如安装服务、注册文件、创建快捷方式等等。 对于软件发布,Advanced Installer 14.9 也提供了很多实用的功能。它可以自动生成更新包,帮助用户方便地进行软件升级版本管理。它还支持发布到各种平台商店(如 Microsoft Store),并提供完善的数字证书支持,以确保软件的安全性完整性。 值得一提的是,Advanced Installer 14.9 还具备特殊的功能,用于满足企业需求。例如,它提供了集成的部署工具,使得 IT 团队能够更好地管理软件部署分发。此外,它还支持自动化构建命令行编译,以及与集成开发环境的集成,方便开发者进行持续集成自动化部署。 总之,Advanced Installer 14.9 是一款功能全面、易于使用的安装程序制作工具。它不仅能够帮助开发者轻松制作出可靠的安装程序,还提供了许多高级功能企业级支持,满足了各类用户的需求。 ### 回答3: Advanced Installer 14.9是一种功能强大的安装程序制作工具,可以创建Windows Installer(MSI)安装程序,使软件安装更加简单方便。 Advanced Installer 14.9提供了许多强大的功能,如图形化的界面设计工具,使您能够轻松创建自定义的安装界面。您可以自定义界面的外观感觉,包括背景图像、图标颜色。此外,您还可以创建自定义对话框控件,以便更好地满足用户的需求。 此外,Advanced Installer 14.9还支持快速打包打包工具,以便在一个安装包中包含多个程序或组件。这有助于简化安装过程,并将多个组件集成到一个可执行文件中。您还可以使用版本控制功能来跟踪不同版本的软件更新。 Advanced Installer 14.9还具有丰富的配置选项,您可以根据特定需求自定义安装过程。您可以选择要安装的文件、注册表项、服务环境变量,以及其他一些用户所需的软件配置。 此外,Advanced Installer 14.9还支持自动安装程序更新修复。您可以轻松地创建更新包,并将其分发给用户,以便他们能够快速获取软件的最新版本。 总之,Advanced Installer 14.9是一款强大而灵活的安装程序制作工具,可以帮助开发人员轻松创建功能丰富、可自定义的安装程序,以及简化软件的分发更新过程。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值