单页网站的优点,手机版网站如何建设,2018网站建设涉及,wordpress仿妹子图现实生活中#xff0c;关于类和对象最好的例子是自然界的动物类#xff0c;本文将以此为场景逐步引入C的概念#xff0c;达到学习的目的。因为C这门语言本身有很多繁杂的内容#xff0c;而网上的资源也是参差不齐#xff0c;有的人见山谈山遇水聊水#xff0c;有多人故弄… 现实生活中关于类和对象最好的例子是自然界的动物类本文将以此为场景逐步引入C的概念达到学习的目的。因为C这门语言本身有很多繁杂的内容而网上的资源也是参差不齐有的人见山谈山遇水聊水有多人故弄玄虚好比孔乙己说茴香豆的回字有多少种写法这更加让读者越来越晕。
一、类和对象的基本概念 场景引入 基于动物都有年龄、性别多数的动物都会吃东西的现实可以设计一个动物类如下
#includeiostream
using namespace std;class Animal
{
public:int age;//年龄bool sex;//0:男1女
public:Animal(int age,bool sex){this-ageage;this-sexsex;}void eating()//吃东西{coutaninmal is eatingendl;}
};
void test_fun1()
{Animal animal1(10,0);Animal animal2(10,1);animal1.eating();animal2.eating();
} 成员分析使用微软的开发者调试工具在命令行输入cl /EHsc -d1reportSingleClassLayoutAnimal main.cpp查询单个类的布局如下 基于上面的认识我猜想动物类在内存空间的布局如下 静态成员 现实生活中总有一些属性属于所有对象共有因此需要使用static关键字加以声明因此动物类的定义修改如下
#includeiostream
using namespace std;class Animal
{
public:int age;//年龄bool sex;//0:男1女static int group_num;//公用静态成员
public:Animal(int age,bool sex){this-ageage;this-sexsex;group_num;}void eating()//吃东西{coutaninmal is eatingendl;}static void output_group();//静态成员函数};
/*静态成员只能在类的外部进行初始化*/
int Animal::group_num 0;//公用的的静态成员在类外初始化
void Animal::output_group()
{coutgroup num is:Animal::group_numendl;
}void test_fun1()
{Animal animal1(10,0);Animal animal2(10,1);animal1.eating();animal2.eating();Animal::output_group();
} 使用微软的开发者调试工具在命令行输入cl /EHsc -d1reportSingleClassLayoutAnimal main.cpp查询单个类的布局如下对象的空间占用还是8个字节但是动物1和动物2有一个共同的group_num变量。 基于上面的认识我猜想动物类在内存空间的布局如下