例子问题
例子问题1:使用功能分解
给定一个类Thing和代码:
东西一,东西二;
下面的函数调用相当于什么?
thingTwo = thingOne;
可能的答案:
运算符= (thingTwo thingOne);
thingOne使用thingTwo的复制构造函数
ostream& Thing::operator=(const Thing& rhs);
thingTwo。operator = (thingOne);
以上都不是
正确答案:
thingTwo。operator = (thingOne);
解释:
我们得到的是东西一和东西二已经被创造出来了,这是一个至关重要的信息。我们看一下每个选项
运算符= (thingTwo thingOne);
这一行代码没有任何意义,而且语法错误。
ostream& Thing::operator=(const Thing& rhs);
这行代码说要从“Thing”类中访问“operator=”方法并将其放到ostream中,这与将thingOne分配给thingTwo无关。
当我们遇到复制构造函数的选择时,我们必须记住,只有当一个对象使用to来创建另一个对象时,才会使用复制构造函数,例如,我们有一个给定的类Foo:
Foo Foo;
Foo foobar = Foo;
在本例中,我们使用foo来创建foobar。
唯一可行的选择是:
thingTwo.operator = (thingOne);
这行代码意味着thingOne对象被赋值给了thingTwo。
顶尖城市的计算机科学辅导:
亚特兰大计算机科学辅导,奥斯汀计算机科学辅导,波士顿计算机科学辅导,芝加哥计算机科学辅导,达拉斯沃斯堡计算机科学辅导,丹佛计算机科学辅导,休斯顿计算机科学辅导,堪萨斯市计算机科学辅导,洛杉矶计算机科学辅导,迈阿密计算机科学辅导,纽约市计算机科学辅导,费城计算机科学辅导,凤凰计算机辅导,圣地亚哥计算机科学辅导,旧金山湾区计算机科学辅导,西雅图计算机科学辅导,圣路易斯计算机科学辅导,图森计算机科学辅导,华盛顿特区计算机科学辅导
顶尖城市的计算机科学导师:
亚特兰大计算机科学导师,奥斯汀计算机科学导师,波士顿计算机科学导师,芝加哥计算机科学导师,达拉斯沃斯堡计算机科学导师,丹佛计算机科学导师,休斯顿计算机科学导师,堪萨斯城计算机科学导师,洛杉矶计算机科学导师,迈阿密计算机科学导师,纽约市计算机科学导师,费城计算机科学导师,凤凰计算机科学导师,圣地亚哥计算机科学导师,旧金山湾区计算机科学导师,西雅图计算机科学导师,圣路易斯计算机科学导师,图森计算机科学导师,华盛顿特区计算机科学导师