1.通过本次上机作业和老师课堂上所讲的内容,了解三种不同的对象传递方式,掌握静态成员的概念和使用。
上课所学:由关键字static 修饰说明的成员,称为静态成员(static class member)。静态成员为所有对象共享,只有一份存于公用内存中。静态成员包括静态数据成员和静态函数成员。
2.这次上机实验相对较为轻松,写代码时遇到的警告数量相对之前上机较少,可能是对上机操作的更加熟练和对课件知识更加熟悉。
1.
#include<iostream>
using namespace std;
class Tr {
public:
Tr(int n)
{
i = n;
}
void set_i(int n)
{
i = n;
}
int get_i()
{
return i;
}
private:
int i;
};
/*第一种
void sqr_it(Tr ob) //对象ob作为函数sqr_it的形参
{
ob.set_i(ob.get_i() * ob.get_i());
cout << "在函数sqr_it内,形参对象ob的数据成员i的值为:" << ob.get_i();
cout << endl;
}
int main()
{
Tr obj(10);
cout << "调用函数sqr_it前,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
sqr_it(obj);
cout << "调用函数sqr_it后,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
return 0;
}
*/
//第二种
/*
void sqr_it(Tr* ob)//对象指针ob作为函数sqr_it的形参
{
ob->set_i(ob->get_i() * ob->get_i());
cout << "在函数sqr_it内,形参对象ob的数据成员i的值为:" << ob->get_i();
cout << endl;
}
int main()
{
Tr obj(10);
cout << "调用函数sqr_it前,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
sqr_it(&obj);
cout << "调用函数sqr_it后,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
return 0;
}
*/
//第三种
/*void sqr_it(Tr& ob)
{
ob.set_i(ob.get_i()* ob.get_i());
cout << "在函数sqr_it内, 形参对象ob的数据成员i的值为:" << ob.get_i();
cout << endl;
}
int main()
{
Tr obj(10);
cout << "调用函数sqr_it前,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
sqr_it(obj);
cout << "调用函数sqr_it后,实参对象obj的数据成员i的值为:";
cout << obj.get_i() << endl;
return 0;
}
*/
2.#include<iostream>
using namespace std;
class Ctest
{
static int count; //私有成员
public:
Ctest()
{
++count; cout << "对象数量=" << count << '\n';
}
};
int Ctest::count = 0;//A,对静态数据定义性说明
int main(void)
{
Ctest a[3];
return 0;
}