C解析之十三对象的定义
前言:【C解析之十一】类-集万千宠爱于一身中认识了一个“特殊的数据类型”-类,对象是类的实例。类是生成对象的”模板“,类本质上是抽象的概念,系统并不会为类分配存储空间。对象是类-”特殊的数据类型“的物理实体,具有存储空间。
类与对象的关系,是数据类型和变量的关系。
1.对象的定义:
- 定义类的同时定义对象:方法为在类定义的右花括号直接写出对象名列表。
class book
{
private:
int price; //价格属性
int pages; //页数属性
public:
void ShowPrice()
{ //显示书价格操作
printf("The price of this book is %d",price);
}
void ShowPages()
{ //显示书页数操作
prinft("The pages fo this book is %d",pages);
}
}mybook,yourbook; //在这里定义同时创建mybook,yourbook对象
- 使用类名定义对象:定义格式同一般变量定义格式相同。
class book //先定义book类
{
private:
int price; //价格属性
int pages; //页数属性
public:
void ShowPrice()
{ //显示书价格操作
printf("The price of this book is %d",price);
}
void ShowPages()
{ //显示书页数操作
prinft("The pages fo this book is %d",pages);
}
};
book mybook; //再利用book类定义mybook对象
book yourbook; //再利用book类定义yourbook对象
对象有成员数据与成员函数,如book有成员数据:int price;
int pages;
成员函数:void ShowPrice();void ShowPages();
对象的存储空间如何分配呢?首先,不同的对象数据不同,故每个对象都应该有自己独立的数据空间;其次,同类对象的成员函数都是相同的,为了高效率,函数只需存储一份,所有的对象可以共享函数空间。
3.对象的访问:
- 通过对象访问:对象名.数据成员 对象名.函数成员
book.ShowPrice();
- 通过指针访问:指针->数据成员 指针->函数成员
p->ShowPrice();
4.对象小测试:
#include
class book
{
public:
int price; //价格属性
int pages; //页数属性
public:
void ShowPrice()
{ //显示书价格操作
printf("The price of this book is %d \n",price);
}
void ShowPages()
{ //显示书页数操作
printf("The pages fo this book is %d \n",pages);
}
};
int main(){
book mybook;
mybook.pages=838; //C++ Primer第5版页数
mybook.price=128; //C++ Primer第5版价格
printf("Size of mybook is :%d \n",sizeof(mybook)); //mybook存储空间大小
mybook.ShowPages();
mybook.ShowPrice();
return 0;
}
这个小示例演示了从定义类,到定义对象,使用对象的全过程。运行结果来看,需要提出的是,mybook的sizeof值为8,正好是price与pages的大小之和,印证了对象有自己独立的数据空间,共享函数空间的存储策略。