类成员的可访问范围
- 类成员的函数内部访问范围:
- 当前对象的全部属性、函数;
- 同类其他对象的全部属性和函数。
- 类的成员函数以外的地方,只能访问该类对象的公有成员。
#include <iostream>
#include <cstring>
using namespace std;//声明引用的标准输入和输出库(std)
class CEmployee
{
private:
char szName[30];//名字
public:
int salary;//工资
void setName(char *name); //修改名字
void getName(char *name); //读取名字
void averageSalary(CEmployee e1, CEmployee e2);//平均工资
};
void CEmployee::setName(char *name)
{
strcpy(szName, name);
}
void CEmployee::getName(char *name)
{
strcpy(name,szName);
}
void CEmployee::averageSalary(CEmployee e1, CEmployee e2)
{
cout << e1.salary << endl;//访问同类中其他对象的私有成员
salary = (e1.salary + e2.salary) / 2;
}
int main()
{
CEmployee e,p;
//设置私有变量的机制叫做“隐藏”,目的是强制对成员变量的访问一定要通过成员函数进行。
//这样当成员变量的类型改变了,只需要修改成员函数。否则,所有直接访问成员变量的语句都要修改
e.setName("Tom");
e.salary = 600; //直接修改公开变量
cout << e.salary << endl;//输出修改后的值
cin >> (e.salary);
cin >> p.salary;
e.averageSalary(e, p); //求输入的两个变量的平均工资
cout << e.salary << endl; //输出为平均工资
cout << p.salary << endl; //输出刚刚输入的变量p的工资
system("pause");
return 0;
}
成员函数的重载及参数缺省
- 类中的成员函数即可以重载,也可以缺省参数。
#include <iostream>
using namespace std;
class location
{
private:
int x, y;
public:
void init(int X = 5, int Y = 0);
void value(int X);
int value();
};
void location::init(int X, int Y)
{
x = X;
y = Y;
}
void locati