大家做三个C++选择题!

1.std::vector::iterator重载了下面哪些运算符:A:++B:>>C:*(前置)D:==2.下面描述中错误的是:A:基类定义的public成员在公有继承... 1. std::vector::iterator重载了下面哪些运算符:
A:++
B: >>
C: *(前置)
D: ==

2. 下面描述中错误的是:
A:基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
B:基类定义的public和protected成员在私有继承的派生类中可见,也能在类外被访问
C:基类定义的public和protected成员在保护继承的派生类中不可见
D:基类定义的protected成员在保护继承的派生类中可见,也能在类外被访问

3. 编译时会产生错误的是:
#include <iostream>
using namespace std;
struct Foo{
Foo() {}
Foo(int) {}
void fun() {}
};

int main()
{
Foo a(10);//语句1
a.fun();//语句2
Foo b();//语句3
b.fun();//语句4
return 0;
}
A:语句1
B:语句2
C:语句3
D:语句4

1. ???
2. C++的,主要是对类内和类外的概念有点不明白,我理解的是类内应该是本类中的成员或函数,类内应该算是实例化后的 对象吧?那应该 B C D都应该是错的。
3. 更不明白了,VC下调试了一下,第4句是错的,为什么?
我感觉第二题应该 B C D都错了吧?????
大家觉得呢?
展开
 我来答
zhangdw2006
2009-09-30 · TA获得超过1614个赞
知道大有可为答主
回答量:2521
采纳率:0%
帮助的人:1867万
展开全部
1,ACD肯定是,B不太清楚
2B肯定是C不太清楚
public在子类里可见也能被外部访问,protected只在子类可见,外部不能访问
3,我再研究研究,报错是这样的
14 D:\c++\test\main.cpp request for member `fun' in `b', which is of non-class type `Foo ()()'
我理解了,没有参数的定义应该是Foo b
Foo b()代表一个返回值为Foo,名字叫b的函数,这个函数自然没有fun这个功能
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程明波
推荐于2016-12-01
知道答主
回答量:11
采纳率:0%
帮助的人:0
展开全部
1. C
std::vector::iterator 重载了*, ->,[]三个运算符
2.B C D
类内类外应该是对象可不可以调用成员来说的。
比如
class A
{
private:
int a;
public:
void f();
};
A a;
a.a;//成员变量不可以在类外访问
a.f();//f()可以在类外访问
在类内可见就是衍生类的成员函数是否可以访问这个变量为基准就好。
你的选择是对的。

3.C。
这个问题要看编译器怎样理解。
编译器会把 Foo b();误解成一个函数b()的声明,而这个函数的返回值是Foo。
b被理解成函数。下面的语句4当然就被报错了。
构造不含参的对象应该这样:Foo b;
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bdffoo
2009-09-30 · TA获得超过436个赞
知道答主
回答量:159
采纳率:0%
帮助的人:101万
展开全部
第三题:语句3错了,应该写成Foo b;
写成Foo b();没意思,不执行,自然到语句四时就出错,其实是第三句错了

第二题:C错了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式