类(属性+行为):即成员变量+成员函数
在类的主体中,可以使用public、protected、private三个关键字来定义类的属性和行为的访问级别。通常,会在public部分定义类的行为,提供公共的函数接口供外部访问;在protect部分,可以定义遗传给下一代子类的属性和行为;最后在private部分,可以定义这个类所私有的属性和行为。
class A (: public 基类名)
{
public:
//公有成员,通常用来定义类的行为,提供接口供外部访问
protected:
//保护型成员,可以定义遗传给下一代子类的属性和行为
private:
//私有成员,通常用来定义类的属性
}
· 真正在项目中,大概的框架
main.cpp(包括.h头文件声明)
.h头文件(类的声明,只声明不用定义)
.cpp [ 类中各个方法的定义 eg. void Teacher::preLesson(void){...} ]
范例:
/* Teacher.h 类的声明(属性加行为) */
class Teacher
{
public:
void preLesson(void); //成员函数声明,表行为
protected: //成员变量,表属性
int age;
private:
};
/* Teacher.cpp 类的定义 */
# include "Teacher.h"
# include <iostream>
using namespace std;
void Teacher::preLesson(void) //类的定义(这里定义了Teacher类中的preLesson()成员函数)
{
cout<<"备课中"<<endl;
}
/* main.cpp */
# include "Teacher.h" //类的声明头文件
# include <iostream>
using namespace std;
int main()
{
Teacher t;
t.preLesson(); //法一
Teacher* p = NULL;
p = &t;
p->preLesson(); //法二,指针+取地址
Teacher* x = new Teacher();
x->preLesson(); //法三,指针+new
//t.age = 22; //若age是public成员变量即可访问
//cout<<t.age<<endl;
return 0;
}
· 结构体struct VS 类class(两者都可以声明和定义一个类,但一般都用class)
二者唯一区别就是:用前者struct声明的类成员是公有的(public),而默认情况下用后者class声明的类成员函数是私有的(private)
因此,无论使用两者中哪一个声明一个类,都应该在声明中明确指出各个成员的访问级别,而不是依赖于关键字的默认行为。