C++上机 对象传递与静态成员

part a     三种不同的对象传递方式

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.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前,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	sqr_it(obj);
	cout << "调用函数sqr_it后,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	return 0;
 }

2.使用对象指针作为函数参数

#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前,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	sqr_it(&obj);
	cout << "调用函数sqr_it后,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	return 0;
}

 

 3.使用对象引用作为函数参数

#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前,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	sqr_it(obj);
	cout << "调用函数sqr_it后,形参对象ob的数据成员i的值为: ";
	cout << obj.get_i() << endl;
	return 0;
 }

 part b     掌握静态成员的概念和使用

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

 part c

#include <iostream>
using namespace std;
class TSstudent
{
public:
	double money;
	static double m_ClassMoney;
	void lnitstudent(char name[])
	{

	}
	void expendmoney(double a)
	{
		money = a;
	}
	double ShowMoney()
	{
		m_ClassMoney -= money;
		return m_ClassMoney;
	}
};
double TSstudent::m_ClassMoney = 1000;
int main()
{
	TSstudent A;
	TSstudent B;
	TSstudent C;
	A.expendmoney(50);
	cout << "班费还剩余" << A.ShowMoney() << endl;
	B.expendmoney(98.5);
	cout << "班费还剩余" << B.ShowMoney() << endl;
	C.expendmoney(500.53);
	cout << "班费还剩余" << C.ShowMoney() << endl;

}

# include<iostream>
#include<string.h>
using namespace std;
class  TStudent {
    static float m_ClassMoney; 
    char name1[3][100];
    static int j;

public:
    void InitStudent(char name[]);
    void ExpendMoney(float money);
    void ShowMoney();
};
float TStudent::m_ClassMoney = 1000;
int TStudent::j = 0;
void TStudent::InitStudent(char name[])
{
    strcpy_s(name1[j], name);
    j++;
}
void TStudent::ExpendMoney(float money)
{
   m_ClassMoney= m_ClassMoney - money;
}
void TStudent::ShowMoney()
{
    cout <<"班费还剩余"<< m_ClassMoney << endl;
}
int main(void)
{
    TStudent A, B, C;
    char name[3][100];
    float money;
    for (int i = 0; i < 3; i++)
    {
        cout << "请输入学生姓名" << endl;
        cin >> name[i];
    }
    A.InitStudent(name[0]);
    B.InitStudent(name[1]);
    C.InitStudent(name[2]);
    cout << "请输入消费金额" << endl;
    cin >> money;
    A.ExpendMoney(money);
    A.ShowMoney();
    cout << "请输入消费金额" << endl;
    cin >> money;
    B.ExpendMoney(money);
    B.ShowMoney();
    cout << "请输入消费金额" << endl;
    cin >> money;
    C.ExpendMoney(money);
    C.ShowMoney();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值