十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
1、现实世界的事物所具有的共性就是每个事物都具有自身的属性, - -些自身具有的行为,例如一个学生有姓名、性别、年龄等属性,吃饭睡觉玩游戏等行为。C+ +提供了类的概念,可以将某一类事物的所有属性和行为封装在一个class中。
创新互联公司于2013年开始,是专业互联网技术服务公司,拥有项目网站制作、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元梓潼做网站,已为上家服务,为梓潼各地企业和个人服务,联系电话:189808205752、类对于某个事物的描述其实还是抽象的,例如有一-类事物有姓名、性别、年龄等属性,可以吃饭睡觉玩游戏等行为,如果只是这么描述的话其实我们是不知道这个事物具体是什么样的,因为这个类没有告诉我们每个属性具体的值是多少(这个事物的姓名是什么,年龄是多少),所以类只是对某一类事物的一个描述而已。实际应用中我们需要操作某类事物中一个或者多个具体的事物。那么这个具体的事物我们就称之为对象。
3、类是抽象的,对象是具象的。
4、对象是怎么来的呢?由类实例化而来。因此我们也说通过一个类实例化-个对象。
一、类的基本使用 1.类的定义和实例化1)类的定义
属性:变量
行为:函数/方法
类的定义:class+类名{
访问控制符:
成员变量//属性
成员函数//行为
};
访问控制符有三种:public,private,protected.
实列:创建一个动物类
class CAnimal{//,在工程中我们习惯将类名首字母大写
public://访问控制符
char name[32];//定义一个名字属性
int age;//定义一个年龄属性
public:
void func(char *voice){//成员函数,也称方法
cout<
这里先使用访问控制符public,后面再详细介绍访问控制符。
2)类的实列化
实列化一个普通对象
类名 +对象名
CAnimal a;//就简单实列化一个对象了
当进行实列化了后,a就拥有CAnimal的公有属性了。
那么接下来我们就对这个对象的属性进行赋值。
CAnimal a;//实列化一个对象
a.age=10;//对年龄进行赋值
cout<
10
xiaohua:gu lu gu lu
xiaohua
这样我们就给a这个对象的属性赋值,查看属性和调用方法。
那么我们下面来学习定义一个指针变量
类名 *对象名
CAnimal *p;//定义一个指针
注意:定义一个指针变量,但是本质还是指针,不是实列化的对象。
那么接下来就让我们来看看指针变量的用法吧
CAnimal a;
a.age=10;
coutage<func("hulalala");//通过指针来调用方法
10
xiaohua:gu lu gu lu
xiaohua
100
xiaohua:hulalala
2.访问控制符C++中给予成员函数和成员变量访问权限。
public:公有的,修饰成员函数和成员变量只能在类里类外均可以访问。
protected:保护的,修饰成员函数和成员变量只能在类里可以访问。
private: 私有的,修饰成员函数和成员变量只能在类里可以访问。
就这么说着大家都应该不是很明白吧。什么叫类内,什么叫类外?
class Teacher{
public://
char name[32];
private://在私有属性下定义的
int _age;//[Error] 'int Teacher::_age' is private
char _sex;
};
int main()
{
Teacher t;
int age;
char m;
memset(t.name,0,sizeof(t.name));
strcpy(t.name,"wanglaoshi");
t._age=34;
t._sex='m';
return 0;
}
大家看报错原因,_age在private中,在Teacher这个类外是不能进行访问的。
[Error] 'int Teacher::_age' is private
虽然是private,但是如果我们要对其进行访问又该怎么进行操作的呢?这个时候我们就在类内进行修改,private允许在类内进行访问,那么在类内又该怎么进行赋值呢?下面进行代码展示:
class Teacher{
public://
char name[32];
void set_age(int age) {_age=age;}
int get_age() {return _age;}
void set_sex(char sex) {_sex=sex;}
char get_sex() {return _sex;}
private:
int _age;//[Error] 'int Teacher::_age' is private
char _sex;//一般在private中的属性前加_
};
如上面代码显示,在类的public中创建两个函数为在其他函数的访问提供接口,一个set函数给私有属性赋值,一个get函数将私有属性的值拿出来。
那么有没有小伙伴会这么想,反正都能访问private里面的值,那么这个private有什么用呢?乍一看好像没啥用,但是小伙伴们想想啊,万一我们在给private里的属性赋值的时候会不会赋错,或者赋一些奇葩的数字上去
t._age=10000;
t>_sex='p';
如上代码,但是在我们的现实生活中没有这样的人存在,明显不满足客观规律。这时候private配合着set函数就可以轻松的解决了,上面那个代码大家看看该怎么改才能达到目的
void set_age(int age){
if(age<0||age>200){
cout<<"error age"<
我们在set函数里面加给条件判断,这样我们就可以对数据进行合理性检验,保证代码的健壮性。
虽然我们进行了赋值,但是为了代码的健壮性我们可以对代码进行优化改进
bool set_age(int age){
if(age<0||age>200){
cout<<"error age"<
利用bool类型这样我们就可以在调用函数时发现问题了。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧