1.通常来说结构体和类可以通用!(结构体可以说是一个特殊的类)
与类的区别:
在结构体默认所有成员都是public!类默认为private!
在结构体内允许有函数!
struct Ponit
{
int x;
int y;
void output()
{
cout<<x <<endl<<y<<endl;
}
};

2.protect对于外部函数不能被访问!但protect是相对与父类与子类的。
3构造函数与析构函数(一对)
为了保证产生对象初始化。保证唯一性,为类名,而且没有返回值!所以定义对象时候就会自动调用构造函数!
如果不定义构造函数系统会自动生成一默认的构造函数!可以带参数

析构函数为构造函数的去反.对象销毁时候就会调用析构函数!不能带参数!一个类只能有1个析构函数!

同时出现两个函数(包括构造函数),参数类型,个数不同发生函数的重载!

例子: 下面可以发生重载吗?
第一种情况:(1)void output();
??????????????????????? (2)int output();
不能:因为只有返回值不同的,不能构成!
第二种情况:(1)void output(int a,int b=5); b有缺省值!
???????????????? (2)void output(int a);
不能: 有缺省值,调用时候pt.output(5),因为她有缺省值!与第2个一样。
4.this指针!
this指针是隐含指针,每产生一个对象都有一个隐含的this指针!this指针就是指向对象本身!
每个this指针根据 (如this=&pt.this=&pt2...........)她自动获取对象的地址!
如x=0,this->x=0;所以可以分析容易混淆的变量名字.如:
#include <iostream.h>
class Ponit
{
public:
????? int x;
????? int y;
?? Ponit() //构造函数
?? {
?? x=0;
?? y=0;
?? }
?? Ponit(int a,int b)
?? {
?? x=a;
?? y=b;
?? }
????? void output()
?? {
????? cout<<x <<endl<<y<<endl;
?? }
?? void output(int x,int y)
?? {
?? this->x=x;
?? this->y=y;
?? }
};
void main()
{
?? Ponit pt(3,3);
?? pt.output(5,5);
?? pt.output ();
}