济南大学自动化学院C++第四次作业

这篇博客探讨了C++中对象作为函数参数时的行为,以及静态数据成员的特性。实例展示了对象如何在函数调用中传递,并讨论了静态数据成员的初始化、访问方式以及其生命周期。同时,解释了对象引用作为参数时如何影响实参对象的值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


#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.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;
}

 

#include <iostream>
using namespace std;
class ctest
{
	static int count;
public:
	ctest()
	{
		++count; cout << "对象数量=" << count << '\n';
	}
};
int ctest::count = 0;
int main(void)
{
	ctest a[3];
	return 0;
}

 

 

#include<iostream>
using namespace std;
class student
{
	static float m_classmoney;
public:
	void initstudent(char nametemp[])
	{
		for (int count = 0; count < 10; count++)
		{
			name[count] = nametemp[count];
		}
	}
	void expendmoney(float moneytemp)
	{
		money = moneytemp;
		m_classmoney -= money;
	}
	void showmoney()
	{
		cout << "班费还剩余:" << m_classmoney << endl;
	}
private:
	char name[10];
	float money;
};
float student::m_classmoney = 1000;
void main()
{
	char one[10] = { 'A' };
	char two[10] = { 'B' };
	char three[10] = { 'C' };
	student A;
	student B;
	student C;
	A.initstudent(one);
	A.expendmoney(50);
	A.showmoney();
	B.initstudent(two);
	B.expendmoney(98.5);
	B.showmoney();
	C.initstudent(three);
	C.expendmoney(500.53);
	C.showmoney();
}

总结
(1)静态数据成员的初始化与普通数据成员不同。静态数据成员初始化应在类外单独进行,而且应定义对象之前进行。一般在主函数main之前,类声明之后的特殊地带为它提供定义和初始化。初始化格式如下:
数据类型 类名::静态数据成员=初始值
int Ctest::count = 0
这时在数据成员的前面不要加static

(2)静态数据成员属于类的对象的集合,而不像普通函数那样属于某一对象,因此可以使用"::"访问静态的数据成员。

(3)静态数据成员与静态变量一样,是在编译时创建并初始化。它在该类的任何对象被建立之前就存在。因此,共有的数据成员可以在对象被定义之前被访问。对象建立后,共有的静态数据成员也可以被对象进行访问。

(4)使用对象作为函数参数,形参和实参是不同的对象,它们所占地址空间不同,因此,形参
的改变,并不影响实参的值。
(5)使用对象指针作为函数参数中,所谓"传址调用",就是在函数调用时使实参对象和形参对象
的地址传递给函数,形参和实参都指向同一个地址值,此时在函数中对形参对象的修改将影
响调用该函数的实参对象本身。
(6)使用对象引用作为函数的参数,所谓"对象引用",就是对实参对象换了个别名,实际上它们
仍是同一个对象,所以,所谓的形参(别名对象)值的的改变,直接就是实参对象值的改变。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值