文档介绍:静态成员
静态成员的定义、初始化、调用
友元的作用和定义
第三章综合练****br/>主要内容
为什么需要静态成员
A1037528
id
123456
pwd
bal
10
min
John
A2180150
id
666666
pwd
bal
10
min
Cane
A5280175
id
654321
pwd
bal
10
min
Tom
每个对象中min的值都等于10,在内存中有多
个副本,造成空间浪费,而且不易管理
Account
10
min
A1037528
id
123456
pwd
bal
John
A2180150
id
666666
pwd
bal
Cane
A5280175
id
654321
pwd
bal
Tom
min不再占用多个对象的存储空间,而是让各对象共享数据成员min的值,则内存中min只有一个副本
静态成员是解决同一个类的不同对象之间的数据和函数共享问题。
静态成员是类的所有对象共享的成员,而不是某个对象的成员,它在对象中不占存储空间,是属于整个类的成员。
静态成员分为静态数据成员和静态成员函数。
格式:
static <静态成员的定义>;
什么是静态成员
Account类静态成员的定义:
class Account
{
};
static void deposit(<参数列表>);
static void withdraw(<参数列表>);
void display();
char id[8];
char pwd[6];
double balance;
public:
private:
static double min_balance;
为什么要进行初始化
静态数据成员属于静态变量,必须对其进行初始化后才能使用。
何时进行初始化
静态变量不应该占用函数的空间,且静态数据成员不能占用对象的存储空间,因此一般在类的实现部分完成静态数据成员的初始化。
静态数据成员初始化
格式:
#include <>
#include “”
//
void Account::deposit(……)
{
<函数体实现>
}
//实现“存钱”成员函数
double Account::min_balance = 10; //注意不要写错!
<类型> <类名>::<静态数据成员>=<值>;
静态成员函数访问数据成员
void Account::deposit(double amount)
{
balance += amount;
cout<<“Balance in your account is :”<<balance<<endl;
}
//以前我们实现的“存钱”成员函数
void Account::deposit(double amount, Account a)
{
+= amount;
cout<<“Balance in your account is :”<<<<endl;
}
//现在实现的静态“存钱”成员函数
{
-= amount;
cout<<“Balance in your account is :”<<<<endl;
}
if (amount >= min_balance)
{
cout<<“There is not enough money in your account!<<endl;
exit(1);
}
//实现静态“取钱”成员函数
void Account::withdraw(double amount, Account a)
总结:静态成员函数可以直接访问该类的静态数据成员和成员函数,但是要在静态成员函数中使用非静态成员时,要通过对象来调用。