[C++之旅] 7 C++类和对象
类和对象
类:相当于一个种类,以狗狗为例,狗就是一个类,狗这个类里包含无数种不同种类的狗狗;每个狗狗都有自己的种类名(如哈士奇、秋田犬等等)、名字、年龄、叫声等,种类、名字、年龄为狗的属性,也就是狗这个类的数据成员,叫声为狗狗的技能,也就是狗这个类的成员函数。
成员:具体指向某个事物,相当于狗这个类中的哈士奇,他的名字叫旺财、年龄1岁等等
class Dog //dog为类名
{
char type; //数据类型
char name[20];
int age;
void speak(); //成员函数
}
访问限定符:在类中不是把狗狗的所有属性或技能描述出来,比如狗狗胡须的长短等等,但狗狗的胡须长度又是描述狗狗的一个特征,因此就需要访问限定符,将人们关心狗狗的特征显示出来,不关心的部分隐藏起来;访问限定符有三个:public
公共的、protected
受保护的、private
私有的;
以狗狗为例程序如下
class Dog
{
public: //公共的成员
char type;
char name[20];
int age;
void speak();
private: //私有的成员
int beard;
}
对象的实例化
实例化对象就好比在狗这个种类中生成一条或多条你自己的狗狗。在C++中实例化有两种方式:从栈中实例化、从堆中实例化
- 从栈中实例化对象
以上面狗狗的类为例,现在实例化一个狗狗的对象。
int main(void)
{
Drog doge; //实例化一个对象
Drog doges[10]; //实例化一个对象数组
return 0;
}
- 从堆中实例化
int main(void)
{
Drog *doge = new Drog(); //实例化一个对象
Drog *doges = new Drog[10];//实例化一个对象数组
delete doge;
delete []doges;
return 0;
}
从堆中实例化一个对象与栈中略有不同,栈中实例化的对象使用完后系统会自动释放掉对象的内存,在堆中实例化系统不会自动释放,因此程序末尾需手动释放内存。
对象成员的访问
访问对象成员就好比是查看和修改你生成的一只或多只狗狗的属性和技能。从栈和堆中实例化的对象访问方法不同。
访问从栈实例化对象的成员
int main(void)
{
Drog doge; //实例化一个对象
Drog doges[10]; //实例化一个对象数组
doge.age = 2; //访问成员数据
doge.speak(); //访问成员函数
doges[5].age = 2; //访问数组第六个成员数据
doges[5].speak(); //访问数组第六个成员函数
return 0;
}
访问从堆实例化对象的成员
int main(void)
{
Drog *doge = new Drog(); //实例化一个对象
Drog *doges = new Drog[10];//实例化一个对象数组
doge->age = 2; //访问成员数据
doge->speak(); //访问成员函数
doges[5]->age = 2; //访问数组第六个成员数据
doges[5]->speak(); //访问数组第六个成员函数
delete doge;
delete []doges;
return 0;
}
网友评论