类和对象
类是一种数据类型,设计时系统不为类分配存储空间,所以不能去访问类里面的数据成员,也不能去初始化类里
面的数据成员。只能访问这个类所产生的对象的数据成员(前提是共有)。
eg:
类相当于图纸是描述和规划的蓝图,而对象就是图纸实例化后的实体对象(楼房)。
计算机不给类分配内存,只给对象分配内存。
创建对象有两种常用方法:1.直接定义
2.动态创建
类里面有成员变量(属性)和成员函数,一般都把属性设为私有,成员函数设为公有。
成员函数:如果在类里面声明了函数,类外定义时必须要把类名加上;也可以直接在类里面定义函数,那样就不用加了。
在函数声明时,给出返回类型、函数名、形参类型就行;声明时也可以给默认值,
如果函数有声明,定义点和声明若分离,默认值必须在声明中给,不要在定义中给,如果定义点和声明在一块,则可以
在定义点给默认值。
eg:
class CGoods
{
private:
char Name[];
int Amount;
float Price;
float Total_value;
public:
void RegisterGoods(char[],int,float);//第一个成员函数的声明
float GetToal_value()//第二个成员函数的直接定义
{
return Totai_value;
}
};
void CGoods::RegisterGoods(char name[],int amount,float price)//第一个成员函数的定义
{
strcpy(Name,name);
Amount = amount;
Price = price;
}
C++三大特性:封装、继承、多态
访问限定符:
1.public: 成员的访问可在任意位置
2.protected: 子类和本类类中可访问成员
3.private: 本类类中可访问成员
从设置点起,到类结束或者下一个访问限定符为止为限定范围。类默认的访问限定符是private。
访问说明符private(私有的)和protected(保护的)体现了类具有封装性。(属性和行为实现保护起来)
写一个简单的类
eg:
#include<iostream>
using namespace std;
class CGoods
{
private:
char Name[21];
int Amount;
float Price;
float Total_value;
public:
void RegisterGoods(char[],int ,float);
void CountTotal();
void CountTotal();
void GetName(char*);
int GetAmount();
float GetPricee()
{
return Price;
}
};
void CGoods::RegisterGoods(char name[],int amount,float price)
{
strcpy(Name,name);
Amount = amount;
Price = price;
}
void CGoods::CountTotal(void)
{
Total_value = Price*Amount;
}
void CGoods::GetName(char name[])
{
strcpy(name,Name);
}
int CGoods::GetAmount()
{
return Amount;
}
int main()
{
CGoods x1;
return 0;
}
至于为什么要把类中的成员属性设置为私有的?(谈谈自己的见解)
为了封装、为了分模块,为了用接口(成员函数)把作者和用户隔离开来,为了让大家只专心自己那一块
就好,不用去管自己不该管的。
把可以让别人访问和修改的,以接口的形式公开,接口的好处在于,别人依赖你的接口,而不是依赖你具
体的实现,那么你修改了这个接口的实现,别人那边不需要修改。
如果将类中的属性定义为public类型,当属性名称发生改变的时候,所有直接调用该属性的代码都需要进
行修改。而将其定义为private类型,则别处访问只能通过该属性的访问接口进行访问,只要接口不变其他代码
就不需要变化,保证了对该类型中的属性的修改只对该类的代码产生影响而不影响其他类。