oo基本知识
1.类的声明,头文件,源文件
1.1头文件(.h):
- 写类的声明(包括类里面的成员和方法的声明)、函数原型、#define常数等,但一般来说不写出具体的实现。在写头文件时,在开头和结尾处必须加上预编译语句,但一般ide会自动帮你写好。
#ifndef CIRCLE_H
#define CIRCLE_H
#endif
class Circle{
private:
double r;
public:
Circle();
Circle(double R);
double Area();
};
1.2 源文件(.cpp):
- 写实现头文件中已经声明的那些函数的具体代码。
- 需要注意的是,开头必须#include一下实现的头文件,以及要用到的头文件。那么当你需要用到自己写的头文件中的类时,只需要#include进来就行了。
- 源文件举例:
#include "Circle.h"
Circle::Circle(){
this->r=5.0;
}
Circle::Circle(double R){
this->r=R;
}
double Circle:: Area(){
return 3.14*r*r;
}
- 开头处包含了Circle.h,事实上,只要此cpp文件用到的文件,都要包含进来!这个文件的名字其实不一定要叫Circle.cpp,但非常建议cpp文件与头文件相对应。
1.3协同
- 在main.cpp中,只需要include头文件即可使用相应的类。
- main.cpp举例:
#include <iostream>
#include "Circle.h"
using namespace std;
int main(){
Circle c(3);
cout<<"Area="<<c.Area()<<endl;
return 0;
}
2.对象的创建
- Struct 和class的本质差别:struct默认权限是public,class默认权限是private
TDate g;
int main(){
g.SetDate(2000,1,1);
TDate t;(存在栈中)
t.SetDate(2015,11,17);
TDate *p = new TDate; (堆中)
p->SetDate(2015,11,17);
}
TDate g=TDate();
- 对应三种存储方式:全局静态区,栈区,堆区。
- 对应两种声明方式:非指针,指针。非指针用.来访问,指针用箭头。