PTA-C++(构造函数与析构函数1*)

一、判断题

1.C++程序中,类的构造函数名与类名相同。(T)

2.在C++语言中引入内联函数(inline function)的主要目的是降低空间复杂度,即缩短目标代码长度。(F)

3.形参 int fun(int a=1,int b,int c=2)合法 (F)

二、单选题

2-1
下列函数中,( C)不能重载。

A.成员函数
B.非成员函数
C.析构函数
D.构造函数

2-2
下列对重载函数的描述中,(A )是错误的。

A.重载函数中不允许使用默认参数
B.重载函数中编译根据参数表进行选择
C.不要使用重载函数来描述毫无相干的函数
D.构造函数重载将会给初始化带来多种方式

2-3
在下面类声明中,关于生成对象不正确的是(C )。
class point
{ public:
int x;
int y;
point(int a,int b) {x=a;y=b;}
};

A.point p(10,2);
B.point *p=new point(1,2);
C.point *p=new point[2];
D.point *p[2]={new point(1,2), new point(3,4)};

2-4
设A为自定义类,现有普通函数int fun(A& x)。则在该函数被调用]时:( C)

A.将执行复制构造函数来初始化形参x
B.仅在实参为常量时,才会执行复制构造函数以初始化形参x
C.无需初始化形参x
D.仅在该函数为A类的友元函数时,无需初始化形参x

2-5
析构函数可以返回:(D)

A.指向某个类的指针
B.某个类的对象
C.状态信息表明对象是否被正确地析构
D.不可返回任何值

2-6
建立一个类对象时,系统自动调用(A)

A.构造函数
B.析构函数
C.友元函数
D.成员函数

2-7
在下列关键字中,用以说明类中公有成员的是( A)。

A.public
B.private
C.protected
D.friend

2-8
有关类和对象的说法下列不正确的有( C)。

A.对象是类的一个实例
B.任何一个对象只能属于一个具体的类
C.一个类只能有一个对象
D.类与对象和关系与数据类型和变量的关系相似

2-9
下列属于类的析构函数特征的是(A)

A.一个类中只能定义一个析构函数
B.析构函数名与类名不同
C.析构函数的定义只能在类体内
D.析构函数可以有一个或多个参数

2-10
下列各类函数中,不是类的成员函数的是( C)

A.构造函数
B.析构函数
C.友元函数
D.拷贝构造函数

三、填空题

1.基本概念
类是对象的抽象,而一个对象则是其对应的一个 实例

2.基本概念在面向对象程序设计方法中,对象是系统中用来描述客观事物的一个实体,它由
数据 和可执行的一组操作共同组成。

3.(4分)A member with the same name as its class is called a constructor. A constructor declaration specifies an argument list (exactly as for a function) but has no return type. The name of a class cannot be used for an ordinary member function, data member, member type, etc., within the class.

4.(2分)A constructor’s job is to initialize an object of its class.

四、程序填空题

暂无

五、函数题

6-1 定义一个矩形类(C++构造函数)

分数 10
作者 张德慧
单位 西安邮电大学
设计一个名为Rectangle的矩形类,这个类包括:两个名为width和height的double数据域,它们分别表示矩形的宽和高。width和height的默认值都为1.该类包括矩形类的无参构造函数(默认构造函数);一个width和height为指定值的矩形构造函数;一个名为getArea( )的函数返回矩形的面积;一个名为getPerimeter( )的函数返回矩形的周长。请实现这个类。

类名为:
Rectangle
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include
using namespace std;
//你提交的代码将嵌入到这里

int main()
{
double m,n;
cin>>m;
cin>>n;
Rectangle a(m,n);
cout<<a.getArea()<<endl;
cout<<a.getPerimeter()<<endl;
return 0;
}
输入样例:
3.5 35.9
输出样例:
125.65
78.8

class Rectangle
{
	private:
		double width;//宽
		double height;//高
	public:
		Rectangle()//无参构造函数
		{
			width=1;
			height=1;
		}
		Rectangle(double x,double y)//有参构造函数
		{
			width=x;
			height=y;
		}
		double getArea()//得到面积
		{
			double area;
			area=width*height;
			return area;
		}
		double getPerimeter()//得到周长
		{
			double perimeter;
			perimeter=2*(width+height);
			return perimeter;
		}

};

6-2 设计一个三角形Triangle类(C++构造函数)

分数 10
作者 张德慧
单位 西安邮电大学
设计一个三角形Triangle类。这个类包括: 两个名为width和height的double型数据域,它们分别表示三角形的底宽和高。一个为width和height指定初值的构造函数。 一个名为getArea()的方法返回这个三角形的面积。

类名为:
Triangle
裁判测试程序样例:
#include
using namespace std;
// 你提交的代码将被嵌入到这里

int main( )
{
double w,h;
cin>>w>>h;
Triangle t(w,h);
cout<<"The area of the Triangle is: "<<t.getArea( )<<endl;
}
输入样例:
3.5 4.8
输出样例:
The area of the Triangle is: 8.4

class Triangle
{
	private:
		double width;//宽
		double height;//高
	public:
		Triangle(double x,double y)//有参构造函数
		{
			width=x;
			height=y;
		}
		double getArea()//得到面积
		{
			double area;
			area=width*height/2;
			return area;
		}

};

六、编程题

7-1 模拟EXCEL排序

分数 25
作者 陈越
单位 浙江大学
Excel可以对一组纪录按任意指定列排序。现请编写程序实现类似功能。

输入格式:
输入的第一行包含两个正整数N(≤10
5
) 和C,其中N是纪录的条数,C是指定排序的列号。之后有 N行,每行包含一条学生纪录。每条学生纪录由学号(6位数字,保证没有重复的学号)、姓名(不超过8位且不包含空格的字符串)、成绩([0, 100]内的整数)组成,相邻属性用1个空格隔开。

输出格式:
在N行中输出按要求排序后的结果,即:当C=1时,按学号递增排序;当C=2时,按姓名的非递减字典序排序;当C=3时,按成绩的非递减排序。当若干学生具有相同姓名或者相同成绩时,则按他们的学号递增排序。

输入样例:
3 1
000007 James 85
000010 Amy 90
000001 Zoe 60
输出样例:
000001 Zoe 60
000007 James 85
000010 Amy 90

暂无
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中,构造函数是一个特殊的方法,用于创建和初始化一个对象。可以使用构造函数来指定对象的初始状态,为其成员变量赋初值,并执行一些必要的操作。 在ptajava2学生中,构造函数可以用来初始化学生对象的属性。通常情况下,一个学生对象应该具有姓名、年龄、性别等基本信息构造函数的定义通常与的名称相同,没有返回型,并且在创建对象时自动调用。在学生构造函数中,我们可以传递参数来设置学生的姓名、年龄和性别,以便在对象创建时将其赋值给相应的属性。 例如,定义一个名为Student的,可以定义一个构造函数如下: public class Student { private String name; // 学生姓名 private int age; // 学生年龄 private String gender; // 学生性别 // 构造函数 public Student(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } // 其他成员方法 // ... } 在上面的代码中,我们在Student中定义了一个构造函数,它接受三个参数:name、age和gender,并将它们分别赋值给对应的成员变量。这样,在创建学生对象时,可以通过调用构造函数并传入相应的参数来初始化该对象的属性。 例如,可以使用以下代码创建一个名为"张三"、年龄为18岁、性别为"男"的学生对象: Student student = new Student("张三", 18, "男"); 通过构造函数,我们可以在创建对象时方便地设置学生的初始属性,使得对象的创建和初始化过程更加简洁和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值