中重载决议与可访问性检查的顺序的
对于如下的类: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