作业2.4

一.选择题

1、下列不能作为类的成员的是(B)

A. 自身类对象的指针

B. 自身类对象

C. 自身类对象的引用

D. 另一个类的对象

2、假定AA为一个类,a()为该类公有的函数成员,x为该类的一个对象,则访问x对象中函数成员a()的格式为(B)

A. x.a

B. x.a()

C. x->a

D. (*x).a()

3、已知:p是一个指向类A数据成员m的指针,A1是类A的一个对象。如果要给m赋值为5,正确的是(C)

A. A1.p=5;

B. A1->p=5;

C. A1.*p=5;

D. *A1.p=5;

4、下列不具有访问权限属性的是(A)

A. 非类成员

B. 类成员

C. 数据成员

D. 函数成员

5、 下面的叙述中那个是不正确的是__C_

A 类必须提供至少一个构造函数

B 默认构造函数的形参列表中没有形参

C 如果一个类没有有意义的默认值,则该类不应该提供默认构造函数

D 如果一个类没有定义默认构造函数,则编译器会自动生成一个,同时将每个数据成员初始化为相关类型的默认值

二.填空题

1、给出下面程序输出结果。

#include <iostream>

using namespace std;

class Test

{ int x,y;

public:

Test(int i,int j=0)

{x=i;y=j;}

int get(int i,int j)

{return i+j;}

};

int main()

{ Test t1(2),t2(4,6);

int (Test::*p)(int,int);

p=&Test::get;

cout<<(t1.*p)(5,10)<<endl;

Test *p1=&t2;

cout<<(p1->*p)(7,20)<<endl;

}

答:15和27

2、下面程序运行的结果是:。

#include <iostream.h>

class Test

{ private:

int x,y;

public:

Test() {x=y=0;}

void Setxy(int x,int y) {______}

void show(){______}

};

int main()

{ Test ptr;

ptr.Setxy(5,10);

ptr.show();

}

答:5+10=15

3、请在下面程序的横线处填上适当内容,以使程序完整,并使程序的输出为:

11, 10

13, 12

#include <iostream.h>

class A

{int a;

public:

A(int i=0){a=i;}

int Geta(){return a;}

void show(){cout<<a<<endl;}

};

class B

{

A a;

int b;

public:

B(int i,int j):b(i)a(j)__

{ }

void show(){cout<<a.Geta()<<","<<b<<endl;}

};

void main()

{ B b[2]={B(10,11),B(12,13)};

for(int i=0;i<2;i++)

b[i].show;______

}

三、改错题

1. #include <iostream.h>

class Test

{ private:

int x,y=20;

public:

Test(int i,int j){ x=i,y=j; }

int getx(){return x;}

int gety(){return y;}

};

void main()

{ Test mt(10,20);

cout<<mt.getx()<<endl;

cout<<mt.gety()<<endl;

}

答:void main()--->int main(int x,int y)

2. #include <iostream.h>

class Test

{int x,y;

public:

void fun(int i,int j)

{x=i;y=j;}

void show()

{

cout<<"x="<<x;

if(y)

cout<<",y="<<y<<endl;

cout<<endl;

}

};

int main()

{ Test a;

a.fun( )

a.fun(1);

a.show();

a.fun(2,4);

a.show();

}

答:函数a.fun()和a.fun(1)找不到重载对象,形参需要初始化赋值

3 . #include <iostream.h>

class X

{ public:

int x;

public:

X(int x)

{cout<< this->x=x <<endl;}

X(X&t)

{x=t.x;

cout<<t.x<<endl;

}

void fun(X);

};

void fun(X t)

{ cout<<t.x<<endl;}

void main()

{ fun(X(10));}

答:

X(int x)

{cout<< this->x=x <<endl;}构造函数未进行赋值初始化

{fun(X(10));}找不到构造对象

4 . #include <iostream.h>

#include <string.h>

class Bas

{ public:

Bas(char *s="\0"){strcpy(name,s);}

void show();

protected:

char name[20];

};

Bas b;

void show()

{ cout<<"name:"<<b.name<<endl; }

void main()

{

Bas d2("hello");

show();

}

答:{ cout<<"name:"<<b.name<<endl; }中b.name是protected对象,受保护

四、编程题

4.1 a: 编写一个类Person,表示一个人的名字和地址,使用string来保存每个元素

b:为Person提供一个接受两个string参数的构造函数

c:提供返回名字和地址的操作

d:指明Person的那个成员应声明为public,那个成员应声明为private

相关推荐
软件黑马王子3 小时前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫3 小时前
go orm GORM
开发语言·后端·golang
计算机小白一个3 小时前
蓝桥杯 Java B 组之设计 LRU 缓存
java·算法·蓝桥杯
万事可爱^4 小时前
HDBSCAN:密度自适应的层次聚类算法解析与实践
算法·机器学习·数据挖掘·聚类·hdbscan
黑不溜秋的4 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
李白同学4 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?5 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
青龙小码农6 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿6 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!6 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode