#include<bits/stdc++.h> using namespace std; struct node1 { int b; node1() { b = 1; } node1(int x) { b = x; } } a; struct node2 { int b; node2() { b = 1; } node2(int x) { b = x; } node2(node1 x) { b = x.b * 2; } }; void out(node1 x) { cout << x.b << ' '; } void out(node2 x) { cout << x.b << ' '; } void out(int x) { cout << x << ' '; } int main() { out((node2)a.b); out((node2)(a).b); out(node2(a).b); }
这段代码执行后输出结果为:
A. 2 2 2
B. 2 1 2
C. 1 2 2
D. 1 1 2
答案为 D。
解析:成员运算 .
大于强制转换,所以前两个都会先执行
.
,而第三个输出会先调用构造函数再执行 .
。
本文作者:ZnPdCo
本页面的全部内容在 CC BY-SA 4.0 和 SATA 协议之条款下提供,附加条款亦可能应用
评论