介绍
- 静态成员是什么
1.静态成员属于类而不属于对象,生命周期只存在当前进程中
2.相当于全局变量和全局函数,只是多了类作用域和访问控制属性限制- 静态成员有什么用
1.静态成员函数没有this指针,没有常属性
2.静态成员依然有类的作用域和访问限定符约束- 静态成员怎么用
1.静态成员变量的定义和初始化只能在 类 的外部,不能在构造函数中
2.静态成员变量为该类所有对象共享
3.访问静态成员可以通过 对象 也 可以直接通过 类
4.静态成员函数 只能访问 静态成员(且没有this指针)
笔记扩充
1.类里面 函数的声明带const 那定义也要带const.
源码
main.cpp
#include<iostream>
#include<string>
#include "Account.h"
using namespace std;
void main()
{
Account ICBA;
ICBA.adjust(0.3);//调整利率
//一号账户
Account acc1("一航", 101, 4000);
acc1.draw(2000);//取款
acc1.query();//查看余额
acc1.stetle();//调息
acc1.query();
cout << "-----------------------" << endl;
//二号账户
Account acc2("渔夫", 102, 40000);
acc2.save(50000);//存款
acc2.query();//查看余额
acc2.stetle();//调息
acc2.query();
cout << "-----------------------" << endl;
system("pause");
}
Account.h
#pragma once
#include<iostream>
#include<string>
using namespace std;
class Account
{
public:
//构造初始化
Account();
Account(string const&name,int no,double balance);
~Account();
public:
//存款函数
void save(double money);
//取款函数
void draw(double money);
//查看余额
void query()const;//声明带const定义也要带const
//调整利率
static void adjust(double rate);
//存款利息设置
void stetle();
private:
string m_name;//账户名
int m_no;//账号
double m_balance;//存款
//静态变量声明一个变量(不占类大小)
static double m_rate;//利率(PS:这个变量只属于 类)
};
Account.cpp
#include "Account.h"
//初始化
Account::Account()
{
}
Account::Account(string const&name, int no, double balance) :m_name(name), m_no(no), m_balance(balance)
{
}
//析构
Account::~Account()
{
}
//存款函数
void Account::save(double money)
{
m_balance += money;
//cout << "您所存款金额为:" << money<<endl;
}
//取款函数
void Account::draw(double money)
{
if (money > m_balance)
{
cout << "余额不足" << endl;
}
else
{
m_balance -= money;
}
}
//查看余额
void Account::query()const
{
cout << "账户名:" << m_name << endl;
cout << "账号:" << m_no << endl;
cout << "余额:" << m_balance << endl;
}
//调整利率
void Account::adjust(double rate)
{
if (rate > 0)
{
m_rate = rate;
}
}
//存款利息设置
void Account::stetle()
{
//设置利息为 0.002
m_balance = m_balance*(1 + m_rate / 100);
}
//--------------------变量初始化---------------------
double Account::m_rate = 0.2;//静态变量定义初始化