练习(3)

更新时间:2023-10-27 16:19:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

C++作业(3)及参考答案

一、选择填空

(1)关于常成员(const)的描述中,错误的是( B )

A.常成员包含常数据成员和常成员函数两种 B.常数据成员必须是公有的 C.常数据成员要使用构造函数成员初始化列表进行初始化 D.常成员函数是为常对象定义的

2)下面对静态数据成员的描述中,正确的是( B )。 A.静态数据成员可以在类体内进行初始化 B.静态数据成员必须在类体外进行初始化

C.静态数据成员不能受private控制符的作用 D.静态数据成员可以直接用类名调用 (3)下面对静态数据成员的描述中,正确的是( A )。

A.静态数据成员是类的所有对象共享的数据 B.类的每一个对象都有自己的静态数据成员

C.类的不同对象有不同的静态数据成员值 D.静态数据成员不能通过类的对象调用 (4) 下列关于对象数组的描述中,( A)是错误的。 A.对于对象数组只能赋初值而不能再赋值 B.对象数组的下标从0开始

C.对象数组的每个元素都是相同类的对象 D.对象数组的数组名是一个常量指针

(5)下列关于子对象的描述中,(D )是错误的。(子对象:当一个类的成员是某一个类的对象时,该对象就为子对象)

A. 子对象是类的一种数据成员,它是另一个类的对象(防止递归) B. 子对象不可以是自身类的对象

C. 对子对象的初始化要包含在该类的构造函数中 D. 一个类中只能含有一个子对象作其成员

(6)关于指向类的成员指针的描述中,错误的是(D)

A.指向类成员指针与指向对象的指针是不同的。 B.指向类成员函数指针可用该类的成员函数名给它赋值。 C.指向类数据成员指针可用该类的数据成员地址给它赋值。 D.指向类成员指针必须指向类的公有成员。

(7)已知:print()函数是一个类的常成员函数,它无返回值,下列表示中,( A )是正确的;

A.void print() const;B.const void print(); C.void const print();D.void print(const); 参考答案:1-7 BBAAD DA

二、程序改错

(1) class Example { public:

Example{ int y = 10 } { data = y; }//构造函数名后应为()

int getIncrementedData() const { return ++data; }//不修改数据成员值

static int getCount()//不能直接访问普通成员变量,要指明变量所属对象名 {

cout << \ return count;

}

private:

int data;

static int count //没有分号 };

参考答案:

#include class Example {

public: Example( int y = 10 ) { data = y; } int getIncrementedData() const { int a = data; return ++a; }

static int getCount(Example &d) {

cout << \ return count; }

private:

int data;

static int count; };

(2)#include class MyClass{ public: MyClass(int a, int b) { cout<

Y=1.0; //Y是常数,不能进行赋值运算 } void SetX(int a) { X=a; } void Print() {cout<<\private: int X;

const float Y; };

void main(){ const MyClass my(10); my.SetX(20); //常对象不能访问普通成员函数 my.Print(); //常对象不能访问普通成员函数 }

参考答案:

#include

class MyClass{ public: MyClass(int a, float b=1.0):Y(b) { cout<

void main() { MyClass my(10); my.SetX(20); my.Print(); }

三、程序填空

1.输出所有pumpkin的总重量。 #include class pumkin{ public: (1) { weight=w; total_weight+=w; } ~pumkin() { (2) }

static void total_display() { cout<<\ } private: int weight; static int total_weight; };

(3) void main(){ pumpkin p1(15),p2(20),p3(12); (4) }

参考答案:

(1) pumkin(int w)

(2) cout<<\(3) int pumkin::total_weight = 0;

(4) pumkin::total_display(); 或 p1.total_display(); 2.下面是一个程序片段,根据注释填充 #include class A{ public: A(double x1=0.0,double y1=0.0); ~A(){} void outputxy() const; void setz(double x1); void setx(double x1); static void outputz(); double x; static double z; private: double y; };

double A::z=100.0; void main(){

A a(1.5,2.6),*pa=&a;

void (A::*pfun)() const; //定义指向A类返回值为void、无参数的函数指针pfun(); pfun = A::outputxy; //将pfun指向A类中的outputxy函数 (a.*pfun)(); //通过a和pfun调用outputxy()函数 (pa->*pfun)(); //通过pa和pfun调用outputxy()函数 double A::*pm; //定义指向A类double类型指针pm pm = &A::x; //将pm指向A类中的x成员; pa->*pm = 8.8; //通过pa和pm给其成员x赋值 double *spm = &(A::z); //定义指向A类double类型静态成员指针spm *spm = 9.9; //通过spm给其成员z赋值}

四、将下列程序分离类定义和主函数,改成多文件结构。主函数使用类的方式采取包含类定义的头文件的方法。写出运行结果。 #include class Cat{ public:

int GetAge();

void SetAge(int age); void Meow(); protected: int itsAge; };

int Cat::GetAge() { return itsAge;}

void Cat::SetAge(int age) { itsAge=age;} void Cat::Meow()

{ cout<<”Meow.\\n”;} void main(){ Cat frisky;

frisky.SetAge(5); frisky.Meow();

cout <<\ <

运行结果: Meow.

frisky is a cat who is 5 years old。Meow.。 五、分析程序运行结果: 1.#include #include class studentid{ public: studentid(int id=0) { value=id; cout<<”Assigning student id”<

本文来源:https://www.bwwdw.com/article/mwl2.html

Top