我们上一起讲了这一期讲存储类和继承,这个难度很大的。
存储类
存储类主要规定了函数和变量的范围,在c++中有这些存储类↓:
৹ auto(自动判断函数是什么类型)
৹ register (常用的变量和inline差不多,但应用于变量)
৹ static (函数调用之间保持局部变量的值)
就像这样:
#include<bits/stdc++.h>
using namespace std;
void out(){static int i = 0;cout<<"hello "<<++i<<'\n';
}
int main(){int n;cin >> n;while(n--) out();return 0;
}
懂了吗,我们再来看下一个。
৹ extern (就是比如众所周知前面的函数不能访问后面的,但加了这个后只要在前面申明有这个东西就可以了)
#include<bits/stdc++.h>
using namespace std;
extern void out_();
int n;
void out(){static int i = 0;cout<<"hello "<<++i;out_();
}
void out_(){static int j = n+1;cout<<' '<<j--<<'\n';
}
int main(){cin >> n;while(n--) out();return 0;
}
৹ mutable(被mutable修饰的变量,即使在一个const函数,也可以改变)
৹ thread_local (C++存储期的一种,属于线程存储期)
这些存储类就不多讲了
继承
继承我们先来看一个代码再说:
#include<bits/stdc++.h>
using namespace std;
#define DB double
class student{public:int age; //年龄string name; //姓名protected:DB Chinese, Maths, English; //语文,数学·,英语成绩private : DB finalexam; //期末综合成绩
};
class __Final__ : public student{ // 继承(__Final__是一个派生类)public: void GetCME_(){ //输入父类中的受保护成员函数DB C_, M_, E_;cin >> C_ >> M_ >> E_;Chinese = C_, Maths = M_, English = E_;}DB getFinal(){return (Chinese + Maths + English) / 3;}
};
int main(){__Final__ _S;cin>>_S.name>>_S.age;_S.GetCME_();cout << _S.getFinal();return 0;
}
看样例知道这是一个求平均分的。
看一下注释吧。在这里__Final__就是student的派生类。