C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第3节:类型转换

UDS(三)网络层时间参数 网络层定义了N_Ar、N_As、N_Br、N_Bs、N_Cr、N_Cs六个时间参数。 网络层在检测到错误的时间传递至上层使用者 1.当N_As 超时时,即发送方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.comfirm指示 2.当N_Ar超时时,即接收方没有及时发送出N_PDU,系统将放弃信息的接收并传递<N_Result> = <N_TIMEOUT_A>的N_USData.co 阅读详情

12.3 类型转换

1.         对象的类型转换可以用构造函数和转换函数来指定。这些转换称为用户自定义的转换,用作隐式类型转换、初始化和显式类型转换。

2.         只有在无二义性的情况下,用户自定义的转换才有效。转换遵循权限控制规则。权限检查在二义性解析之后发生。

3.         【 13.3 讨论了函数中如何使用转换。】

4.         对于一个简单的值,最多只发生一次用户自定义的类型转换。【例:

class X {

// ...

public:

operator int();

};

class Y {

// ...

public:

operator X();

};

Y a;

int b = a; // 错误,用户自定义的转换只能发生一次

int c = X(a); // OK: a.operator X().operator int()

】

5.         用户自定义的转换只在无二义性的情况下才可以隐式使用 。派生类的类型转换函数不会隐藏掉基类的类型转换函数,除非它们转换成相同的类型。函数重载解析自动选择最匹配的函数来执行转换。【例:

class X {

public:

// ...

operator int();

};

class Y : public X {

public:

// ...

operator char();

};

void f(Y& a)

{

if (a) { // 非法: X::operator int() 还是 Y::operator char() ? 【按:构造函数无名,所以不遵循名字查找规则】

// ...

}

}

       】

12.3.1 通过构造函数来转换类型

1.         声明时没有 explicit 描述符、且调用时可以只传一个参数的构造函数指定了一个从第一个参数类型转换为该类的类型的转换函数。这种构造函数称为类型转换构造函数。【例:

class X {

// ...

public:

X(int);

X(const char*, int =0);

};

void f(X arg)

{

X a = 1; // a <-- X(1)

X b = "Jessie"; // b = X("Jessie",0)

a = 2; // a = X(2)

f(3); // f(X(3))

}

】

2.         用 explicit 构造函数创建对象的方式与非 explicit 构造函数类似,但是必须使用直接初始化语法或显式使用类型转换。默认构造函数可能是个 explicit 构造函数,这时它是用来进行默认初始化或赋值初始化。【例:

class Z {

public:

explicit Z();

explicit Z(int);

// ...

};

Z a; // OK: 执行默认初始化

Z a1 = 1; // error: 没有对应的隐式转换函数 【按:从这里可以看出两种初始化方式的区别! 】

Z a3 = Z(1); // OK: 使用了直接初始化的语法

Z a2(1); // OK: 使用了直接初始化的语法

Z* p = new Z(1); // OK: 使用了直接初始化的语法

Z a4 = (Z)1; // OK: 使用了显式类型转换语法

Z a5 = static_cast<Z>(1); // OK: 使用了显式类型转换语法

】

3.         非 explicit 的拷贝构造函数是类型转换构造函数。隐式声明的拷贝构造函数不是 explicit 的,因此可以在隐式类型转换时调用。

12.3.2 转换函数

1.         X 的成员有如下形式的名字:

       conversion-function-id:

operator conversion-type-id

conversion-type-id:

type-specifier-seq conversion-declarator opt

conversion-declarator:

ptr-operator conversion-declarator opt

那它就指定了一个从 X 到 conversion-type-id 类型的类型转换,这种成员函数叫做类型转换成员函数。 type-specifier-seq 不能为类、枚举、或 typedef-name 。对于这种函数,既不能指定参数类型,又不能指定返回值;它的类型是:“无参数、返回 conversion-type-id 的函数”类型。类型转换函数永远不能用来转成相同的类型、不能转成基类、不能转成 void ,不论是否加了 cv 修饰符 【按:const 、volatile 】

2.         【例:

class X {

// ...

public:

operator int();

};

void f(X a)

{

int i = int(a);

i = (int)a;

i = a;

}

在上述 3 中情况中, a 被 X::operator int() 转成 int 类型

】

3.         用户自定义的转换函数可以在赋值和初始化中自由使用。【例:

void g(X a, X b)

{

int i = (a) ? 1+a : 0;

int j = (a&&b) ? a+b : i;

if (a) { // ...

}

}

】

4.         conversion-type-id 不能是函数或数组类型。 conversion-function-id 中的 conversion-type-id 是尽可能长的 conversion-declarator s 串。【注:这样就防止了声明符 * 与后面的表达式之间的二义性 【例:

&ac.operator int*i;  // 语法错误,被处理为: &(ac.operator int*) i ,而不是 &(ac.operator int) * i

* 在这里了被当做指针声明符,而不是乘号

】

】

       转换函数被自动继承给派生类。

       转换函数可以是虚函数。

 

k最近邻算法——电影分类及案例详解 如图3-7所示,若将国际象棋棋盘放在二维直角坐标系中,格子的边长定义为1,坐标的x轴及y轴和棋盘方格平行,原点恰落在某一格的中心点,则王从一个位置走到其他位置需要的步数恰为二个位置的切比雪夫距离,因此切比雪夫距离也称为棋盘距离。关于这里的距离度量,这个电影分类的例子有2个特征,也就是2维的,可以使用我们高中学过的两点距离公式(两点距离公式其实就是欧氏距离在二维空间上的公式,也就是欧氏距离n的值为2的情况,欧氏距离也称为欧几里德距离)来计算距离,如图3-3所示。对数据进行归一化,避免量纲对计算距离的影响。 阅读详情

相关推荐

【BUAA】【计组】计算机组成 pre (含详细解析)

BUAA 计算机组成 本文章旨在为@走肖暂时无法接通的系列文章创造一个目录,收藏本文章,方便查阅! 1. 入门测试 2. 基础知识 3. Logisim   欢迎来到 Logisim 的世界   Logisim 门电路   Logisim 组合电路   Logisim 时序电路   Logisim 仿真与调试   应用与挑战 4. Verilog 与仿真工具   前言   ISE 入门   VCS 入门   Verilog 语法   Verilog 题目实例与分析   Verilog 工程的设计开发调试

Schrodinger007的博客 9809

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第1节:构造函数

12. 特殊成员函数【按:以下简称特殊函数或这些函数;如没有特别说明,对象是指类实例化的对象, 最外层的对象是指最继承子对象】特殊成员函数包括默认构造函数、拷贝构造函数、拷贝赋值操作符和析构函数。除了12.1中的情况,当程序不显式地声明这些函数时,编译器会隐式声明它们;如果使用了它们,编译器还会隐式地定义这些函数,如12.1,12.4和12.8所示。

declspec的专栏 756

【OpenSearch】从零到一:手把手搭建OpenSearch与Dashboard可视化平台

本文提供了一份详细的OpenSearch与Dashboard可视化平台从零搭建指南。内容涵盖环境准备、系统调优、核心服务安装配置、Dashboard部署与汉化,以及生产环境安全加固建议,帮助用户快速构建一个功能完整的搜索与分析平台。

devops8pract的博客 617

C++标准ISO-IEC-14882-2003:第9章:类 -第1节:类名

 9 类1.        类是一种类型。在它的作用域内,该类型的名字称为类名。类名:       标识符       模板idClass-specifiers和elaborated-type-specifiers用来描述类名。类的对象是由一系列(可能为空)的成员和基类对象。clas

declspec的专栏 936

WPS和Excel通用!省市区四级联动下拉菜单保姆级教程(附最新行政区划数据包)

本文详细介绍了在WPS和Excel中实现省市区四级联动下拉菜单的完整教程,包含2024年最新行政区划数据的获取与整理方法。通过名称管理器和INDIRECT函数的组合,以及WPS的特色功能,帮助用户高效准确地录入四级行政区划信息,提升数据录入效率并减少错误。

s1t2u3的博客 611

PSpice 导入 LTspice 仿真实验 --(如何解决PSpice模型无法使用的错误)

参考了网上第三方器件导入LTspice的博客和资料,不论是哪个公司下载的SPICE模型导入LTspice的方法都类似。如果遇到导入报错的情况可以先看一下报错提示,如果通过语法修改实现功能的则说明可以进行仿真,当然性能可能与官方给的模型存在一点出入,但做一个基本的功能验证本人认为还是可以的,总比做出板子用不了或者完全不匹配的要好一些。

伊丽莎白的学习之路 8998

C++标准ISO-IEC-14882-2003:第14章:模板-第3节:模板实参

 14.3 模板实参 1.      对应模板形参的三种形式,模板实参也有三种形式:类型、非类型和模板。模板 id 中指定的每个模板实参的类型和形式应该与其声明时模板形参列表中相应的形参的类型和形式相匹配。【例:template class Array { T* v; int sz; public:

declspec的专栏 1191

beegfs源码分析

BeeGFS的客户端是由一个内核模块和两个系统服务组成的,这里咱们主要分析内核模块。由于BeeGFS的目录树解析,是在父目录DEntry里找子目录或文件DEntry,逐级迭代完成的,所以在Mount文件系统时,须要从管理节点获取根元数据节点的ID,而后再向根元数据节点查询根目录的DEntry的信息,为后续的目录解析打下基础。获取类似/data/beeond/data/dentries/38/51/root/#fSiDs#/文件fileId的父路径。1.1 FileID的生成。Session网络消息。

wfzy的博客 1913

C++标准ISO-IEC-14882-2003:第9章:类-第3节:成员函数

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 733

【DeepSeek R1构建本地RAG知识库】数据结构化清洗-工作流自动清洗

在构建本地RAG知识库时,数据结构化清洗是关键但繁琐的步骤。传统方法效率低且易出错,而低代码/无代码平台如Dify提供了更高效的解决方案。Dify通过可视化工作流设计,集成大模型智能处理,支持多格式输入输出,无需编码即可完成复杂的数据清洗任务。文章详细介绍了数据结构化的核心困境、目标、价值及类型,并比较了TXT与Markdown在RAG系统中的适用性。最后,通过Dify平台实战演示了如何在20分钟内完成规则制度文档的结构化清洗,输出标准化数据,展示了自动化工作流在数据处理中的高效性和便捷性。

少说,多做 1222

ABAP Cloud 里的高性能日志:CL_BALI_LOG、XCO_CP_BAL 与 AML 的性能对比与选型指南

ABAP日志框架性能对比与选型建议 本文对比了ABAP Cloud中三种主流日志框架的性能表现与适用场景: 标准BALI:适合明确需要保存日志的场景,保存路径短,性能较好 XCO_CP_BAL:API更现代但性能较低,适合需要即时可见性的场景 AML:开源框架,擅长消息缓冲,适合批量处理时暂存消息 测试结果表明: 纯记录不落库时AML最快 需要保存时BALI性能最优 second connection不提升性能但能确保日志留存 选型建议: 高频批处理优先AML+BALI组合 故障诊断考虑XCO的即时可见性

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 215

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第7节:构造与析构

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 689

基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台

电动汽车的动力总成(Powertrain)是车辆的核心系统,包括动力电池、电机控制器、逆变器和驱动电机等关键部件。动力总成的控制策略直接影响车辆的动力性能、能耗效率和驾驶体验。为了验证和优化这些控制策略,基于MATLAB/Simulink的仿真平台成为一种高效且经济的解决方案。本项目旨在构建一个完整的基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台,涵盖控制策略建模、性能评估以及参数标定等功能模块,并通过仿真验证系统的有效性。

xiaoheshang_123的博客 177

C++标准ISO-IEC-14882-2003:第9章:类-第2节:类的成员

 9.2 类的成员类描述:成员声明 类描述opt访问描述符 : 类描述opt成员声明:声明描述符序列opt 成员声明器列表opt ;函数定义 ;opt::opt嵌套名字声明

declspec的专栏 762

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第2节:临时对象

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Styl

declspec的专栏 566

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第6节:初始化

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 760

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

C++标准ISO-IEC-14882-2003:第14章:模板-第1节:模板的参数

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 952

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第4节:析构函数

<!-- /* Style Definitions */ table.MsoNormalTable {mso-style-name:普通表格; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-a

declspec的专栏 825

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第8节:拷贝对象

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 798

C++标准ISO-IEC-14882-2003:第14章:模板

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <object class

declspec的专栏 1292

C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第5节:自由存储管理

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 800

C++标准ISO-IEC-14882-2003:第14章:模板-第4节:类型等价

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 985

(C++语言)有几种(标准)?

(C++98)全称(ISO / IEC 14882:1998) (C++03)全称(ISO / IEC 14882:2003) (C++14)全称(ISO / IEC 14882:2011) (C++14)全称(ISO / IEC 14882:2014) (C++17)全称(ISO / IEC 14882:2017) ...

weixin_45228122的博客 1482

C++标准ISO-IEC-14882-2003:第14章:模板-第2节:模板特化的名字

Normal 0 7.8 磅 0 2 false false false MicrosoftInternetExplorer4 <!-- /* Sty

declspec的专栏 631

C标准&C++标准

C: ISO/IEC 9899 C++: ISO/IEC 14882

3760

读C++标准系列 - 序言

闲暇之余读读C++的标准也是一件很有意思的事情, 我们可以在C++标准委员会的官方网站(http://www.open-std.org/jtc1/sc22/wg21/)下载C++0X标准的草案。目前最新的版本是2008.6.27发布的n2691.pdfISO/IEC 14882: Programming Language C++ - draft ISO/IEC TR 19768: C+

Van's House 2437
上一篇: C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第2节:临时对象
下一篇: C++标准ISO-IEC-14882-2003:第12章:类的特殊成员函数-第4节:析构函数
declspec
博客等级 码龄21年 3粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值