1.观察不同对象分别何时调用构造函数与析构函数,可考虑调用将调用时间作为输出。要求包括:全局对象,局部自动对象、静态局部对象2.建立一个对象数组,内放5个学生的数据(学号、成绩等),设立一个函数

1.观察不同对象分别何时调用构造函数与析构函数,可考虑调用将调用时间作为输出。要求包括:全局对象,局部自动对象、静态局部对象

2.建立一个对象数组,内放5个学生的数据(学号、成绩等),设立一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号; 建立静态数据成员,实现平均分计算

3.(1)将下例程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,使得display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。要求类的头文件与类实现部分的源文件分开存放。

(2)下例中分别将Date的头文件、源文件与Time的头文件、源文件分开存放,自行上机编译执行,体会友元使用方法

//例3.13

#include <iostream>

using namespace std;

class Date;         

class Time

{public:

Time(int,int,int);

void display(Date &);   

 private:

int hour;

int minute;

int sec;

};

class Date

{public:

Date(int,int,int);

friend void Time::display(Date &); 

 private:

int month;

int day;

int year;

};

Time::Time(int h,int m,int s)

{

  hour=h;minute=m;sec=s;

}

void Time::display(Date &d)

{cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl; 

cout<<hour<<":"<<minute<<":"<<sec<<endl;   

}

Date::Date(int m, int d,int y)

{

  month=m;day=d;year=y;

}

int main( )

{

Time t1(10,13,56);

Date d1(12,25,2004);         

t1.display(d1);     

return 0;

}

(10.0分)

1.观察不同对象分别何时调用构造函数与析构函数,可考虑调用将调用时间作为输出。要求包括:全局对象,局部自动对象、静态局部对象

#include <iostream>

using namespace std;



class person { 

	

public:

	int m_age;

	

	person(){

		cout<<"person的默认构造函数"<<endl;

	}

	person(int age){

		cout<<"person的有参构造函数"<<endl;

		m_age=age;

	}

	~person(){

		cout<<"析构"<<endl;	

	}

	person(const person &p){

		cout <<"person的拷贝构造函数"<<endl;	

	}

	

};



void test01(){

	person p;

	p.m_age=18;

	person p2(p);

	cout<<"p2的年龄为"<<p2.m_age<<endl;

	

}

int main(){

   test01();

	person p;

	p.m_age=18;

	

	system("pause");

	return 0;

	

	

}

2.//.建立一个对象数组,

//内放5个学生的数据(学号、成绩等)

//,设立一个函数max,用指向对象的指针作函数参数,

//在max函数中找出5个学生中成绩最高者,并输出其学号; 建立静态数据成员,实现平均分计算

#include <iostream>

using namespace std;

class student

{

private:

	int score;

	int num;

	static float average();

	

public:int count;



	student(int n,int s):

		num(n),score(s){

			

		};

		void max(student *);

		

};





void student::max (student *arr)

{

	int maxscore = arr[0].score;

	int maxnum=0;

	for(int i=0;i<5;i++){

		if(arr[i].score>maxscore){

			maxscore = arr[i].score;

			maxnum= i;

			count++;

			//TODO

		}

	

	

	

}

	cout<<"5个学生中成绩最高者是:"<<arr[maxnum].num<<"号"<<endl;

}



float  student::average()

{

	

return average();

}









int main(){

	student stu[5]{

	student(12,100),

	student(13,99),

	student(14,98),

	student(15,97),

	student(16,96),

	

	};

	student * p=stu;

	stu[5].max(p);

	int average;

	

	

	

	

	

	system("pause");

	return 0;

	

}

3.(1)将下例程序中的display函数不放在Time类中,而作为类外的普通函数,然后分别在Time和Date类中将display声明为友元函数。在主函数中调用display函数,使得display函数分别引用Time和Date两个类的对象的私有数据,输出年、月、日和时、分、秒。要求类的头文件与类实现部分的源文件分开存放。



(2)下例中分别将Date的头文件、源文件与Time的头文件、源文件分开存放,自行上机编译执行,体会友元使用方法





001头文件 touwenjian001.h

#include <iostream>

using namespace std;

class Date;

class Time

{

public:

	Time(int h, int m, int s): hour(h), minute(m), sec(s){};

	friend void display(Date &, Time &);

private:

	int hour;

	int minute;

	int sec;

};

class Date

{

public:

	Date(int m, int d, int y): month(m), day(d), year(y){};

	friend void display(Date &, Time &);

private:

	int month;

	int day;

	int year;

};

void display(Date &d, Time &t)

{

	cout<<d.month<<"/"<<d.day<<"/"<<d.year<<endl;

	cout<<t.hour<<":"<<t.minute<<":"<<t.sec<<endl;

}



源文件

#include"touwenjian001.h"





int main()

{

	Time t1(10, 13, 56);

	Date d1(12, 25, 2004);

	display(d1, t1);

	system("pause");

	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值