#include<iostream>
using namespace std;
class Point{
public://C++中类和结构体的起到的作用类似但是类可以进行对外的访问控制
int x;
int y;
/*void init(){
x = 0;
y = 0;
}*/
Point(){
x= 0 ;
y = 0;
} //构造函数(给对象赋一个初值,也就是来创建对象本身 )为了保证唯一性,采用类名,没有返回值
Point(int a, int b){
x = a;
y = b;
} //函数的重载
/*重载构成的条件:函数的参数类型,参数个数不同*/
/*当一个对象生命周期结束需要一个函数用来回收内存,就要用到析构函数*/
~Point(){
}
void output(){
cout<<x<<endl<<y<<endl;
}
void output(int x, int y){
/*this(=&pt)指针是一个隐含的指针,它指向对象本身,代表了对象的地址
一个类所有的对象调用的成员函数都是同一代码段。所有对数据成员的访问都
隐含的被加上前缀this->例如x = 0,等价于this->x = 0*/
this->x = x;
y = y;
}
};
/*struct Point{
int x;
int y;
void init(){
x = 0;
y = 0;
}
void output(){
cout<<x<<endl<<y<<endl;
}
};*/
int main(){
Point pt(3,3); //当我们声明对象后,才去调用上面的那个构造函数
//pt.init();
pt.output(5,5);
//pt.x = 5;
//cout<<pt.x<<endl<<pt.y<<endl;
pt.output();
return 0;
}
#include<iostream>
using namespace std;
class Animal{
public:
void eat(){
cout<<"anmial eat"<<endl;
}
protected:
void sleep(){
cout<<"anmial sleep"<<endl;
}
void run(){
cout<<"anmial run"<<endl;
}
};
class Pig: public Animal{//类的继承
public:
void breathe(){
Animal::eat();//::作用于标识符说明eat()这个函数是属于哪个类的
cout<<"pig hunger"<<endl;
}
};
int main(){
Animal an;
an.eat();
Pig pg;
pg.eat();
}