一、判断题
1.静态数据成员不能在类中初始化,使用时需要在类体外声明。(T)
2.静态数据成员不能在类中初始化,使用时需要在类体外声明。(F)
3.友元函数不是类的成员函数,只是独立于该类的一般函数。(T)
4.一个类的友元函数可以访问该类的私有成员。(T)
5.一个类的友元函数可以访问该类的私有成员。(F)
二、单选题
2-1 下面关于友元的描述中,错误的是:(D)
A.友元函数可以访问该类的私有数据成员 B.一个类的友元类中的成员函数都是这个类的友元函数 C.友元可以提高程序的运行效率 D.类与类之间的友元关系可以继承
2-2 关于友元函数的描述中,错误的是?(B)
A.友元函数不是成员函数 B.友元函数必须在类体内定义 C.友元函数可以访问类的私有数据成员 D.友元函数破坏了类的封装
2-3 引入友元的主要目的是为了(C)
A.增强数据安全性 B.提高程序的可靠性 C.提高程序的效率和灵活性 D.保证类的封装性
2-4 下面程序的输出结果是(D)
#include using namespace std;
class MyClass { public: MyClass() { ++count; } ~MyClass() { –count; } static int getCount() { return count; } private: static int count; }; int MyClass::count = 0; int main() { MyClass obj; cout << obj.getCount(); MyClass obj2; cout << MyClass::getCount(); cout << obj2.getCount(); return 0; }
A.121 B.232 C.221 D.122
2-5 下面对静态数据成员的描述中正确的是(B)。
A.类的不同对象有不同的静态数据成员值 B.静态数据成员是类的所有对象共享的数据 C.类的每个对象都有自己的静态数据成员 D.静态数据成员不能通过类的对象调用
2-6 在下面有关静态成员函数的描述中,正确的是(A)。
A.在建立对象前,就可以为静态数据成员赋值 B.静态成员函数在类外定义时要用static前缀 C.静态成员函数只能在类外定义 D.在静态成员函数中可以使用this指针
三、填空题
1.静态数据成员初始化必须在类外进行。
2.(4分)A variable that is part of a class, yet is not part of an object of that class, is called a static member. There is exactly one copy of a static member instead of one copy per object, as for ordinary non-static members.
四、函数题
6-1 工资与提成
分数 10 作者 范鹏程 单位 内蒙古师范大学 根据main函数的调用以及程序的输出完成类定义,实现指定的功能
测试main函数样例: #include #include #include<string.h> using namespace std;
/请在这里写上相应的类定义/
int main(){ Salesman sman[]={ Salesman(“Li”,4,100,0.5), Salesman(“Wang”,3,200,0.4), Salesman(“Liu”,2,300,0.3) }; Salesman::show(); cout<<“Average commission is:”<<Salesman::getAver()<<endl; return 0; }
输入样例: 在这里给出一组输入。例如:
无 输出样例: 在这里给出相应的输出。例如:
There are 3 salesmen,sales amount is:620 Average commission is:206.667
暂无
6-1 工资与提成
分数 10 作者 范鹏程 单位 内蒙古师范大学 根据main函数的调用以及程序的输出完成类定义,实现指定的功能
测试main函数样例: #include #include #include<string.h> using namespace std;
/请在这里写上相应的类定义/
int main(){ Salesman sman[]={ Salesman(“Li”,4,100,0.5), Salesman(“Wang”,3,200,0.4), Salesman(“Liu”,2,300,0.3) }; Salesman::show(); cout<<“Average commission is:”<<Salesman::getAver()<<endl; return 0; }
输入样例: 在这里给出一组输入。例如:
无 输出样例: 在这里给出相应的输出。例如:
There are 3 salesmen,sales amount is:620 Average commission is:206.667
暂无
6-3 猫和老鼠有多重
分数 10 作者 fpc 单位 内蒙古师范大学 定义猫和老鼠:Cat与Mouse两个类,二者都有weight属性,定义二者的一个友元函数totalweight(),计算二者的重量和。
裁判测试程序样例: #include using namespace std;
/* 请在这里填写答案 */
int main() { int w1,w2; cin>>w1>>w2; Cat tom(w1); Mouse jerry(w2); cout<<totalWeight(tom,jerry)<<endl; } 输入样例: 100 200 输出样例: 300
class Cat{
public:
Cat(int x){weight=x;}
friend int totalWeight(Cat &a,Mouse &b);
private:
int weight;
};
class Mouse{
friend class Cat;
public:
Mouse(int y){weight=y;}
friend int totalWeight(Cat &a,Mouse &b);
private:
int weight;
};
int totalWeight(Cat &a,Mouse &b)
{
return a.weight+b.weight;
}
五、编程题
7-1 友元函数的练习
分数 10 作者 赵晨 单位 浙江大学 定义Boat与Car两个类,两者都有私有的整型weight属性,定义两者的一个友元函数getTotalWeight(),计算二者的重量和。
参考主函数: int main() { int n,m; cin>>n>>m; Boat boat(n); Car car(m); cout<<“船和汽车共重”<<getTotalWeight(boat,car)<<“吨”<<endl; }
输入格式: 请在这里写输入格式。例如:输入在一行中给出2个整数m和n。
输出格式: 请在这里描述输出格式。例如:对每一组输入,在一行中输出:船和汽车共重M+n吨值。
输入样例: 在这里给出一组输入。例如:
40 30 输出样例: 在这里给出相应的输出。例如:
船和汽车共重70吨
暂无
|