中重载决议与可访问性检查的顺序的

设备电焊/切割设备2021年09月06日

对于如下的类:classClxECS

{

public:

doubleTest(doubledValue){returndValue*13;};

private:

intTest(intiValue){returniValue*13;};

};

下面的函数输出是什么?

voidECS_test()

{

intiValue=13;

ClxECSlx;

st(iValue)endl;

}

如果说你的答案是169,那么你就大错特错了!

因为上面的函数根本不能通过编译!编译器会给你一个不能访问私有成员的错误。

但是有一点 惊奇吗?难道编译器不能找到类ClxECS的公有成员函数double Test(double dValue)并把实参iValue类型转换为double吗?

答案是:不能!其实原因很简单:C++中重载决议是在可访问性检查之前进行的。

对于上面的例子,编译是按如下顺序进行的:

首先,编译器进行重载决议,去查找适合的成员函数(而不管查找到的成员函数是否为public的)。这时候,编译器理所当然的选择参数为int类型的Test成员函数。

然后,编译器进行访问性检查。这个时候,编译器会发现参数类型为int的成员函数Test是类ClxECS的私有成员。那么,编译器就会报错,告诉你无法访问私有成员。

上海阴道炎治疗哪家好
南京哪家医院治疗白癜风好
衢州白癜风医院哪家好
相关阅读
有些女生可能会说:不想要像穿搭三那样太极度随性休闲

气象条件随之逆凉,近期好多女教师都在后台给楚哥埋怨问道:又要借钱鞋子...

2023-09-16
消息称惠普将上架战X 2022 14 英寸锐龙版:搭载 R7 6800HS

IT之家 5 月 22 日消息,据IT之家Gmail“chengxd”独家壹周刊,科技公司将发行正...

2023-09-15
民生公司股票:给予广汽集团买入评级

民生银行股份有限的公司吕伟,邵将,谢坤近期对广汽集团进行研究并发表了研...

2023-09-10
和同事关系日后好,也不要做这3件事,要不然会很吃亏!

人在职场,想找到一个无话不却说, 未尝不谈的幸福密友, 几乎是不可能的...

2023-09-07
钱江摩托:拟向162位激励对象授予一般来说股票1587万股,授予价格5.93元/股

钱江摩托5月20日暂定,发布2022年一般而言股份鼓舞开发计划(草案),开发计划...

2023-09-05
上海餐饮、便利店复工实录:沟通多方实现到口村 员工留宿门店闭环管理

经济观察网络 美联社 叶心活命 5年底20日,天津市商业联合亦会备份全市部份...

2023-09-04
友情链接