C++面向对象基础

类源于现变生活中、是所遇见的实实在在的对象,对每个对象的认识就需要抽象的概念,

分类的结果使对象更加具体和细化。

例如,问什么是桑塔纳?答案是一种小汽车,再问什么是小汽车?一般答案是一种交通工具。在面向对象的计算机世界里,一辆实实在在的桑塔纳小汽车称为类桑塔纳的实例或对象。类桑塔纳是类小汽车的一个子类,而类小汽车是类交通工具的一个子类。

类是对客观事物的一种高度抽象,是具有一组相同属性操作的集合,因此它包括两个部分的内容:数据成员成员函数。其定义格式为如下。

class<类名>
{
public: //数据成员成者成员函数
private: //数据成员或者成员函数
protected: //数据成员或者成员函数
};

类的定义和结构的定义有些相似,但是类和结构有本质的区别:类定义中默认的情况下成员是private 的,而结构定义中的默认成员是 public 的。在C语言中,结构中不允许有成员函数,在C++语言中可以有成员函数。类的定义方法如程序206.cpp 所示。

//案例名称:使用 C++语言的类
//程序名称:206.cpp
#inelude<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
};
int main ()
{
person Zhang_three;
Zhang_three.name=“张三“;
Zhang_three.height= 175;
Zhang_three.weight=60;
cout<<"名字:“<<Zhang three.name<<"\n身高:“<<Zhang_three.height<<”\n 体重”<< Zhang_three.weight<<endl;
}

程序解释:程序中首先声明了一个类 person,然后定义了三个数据成员分别来描述姓名、身高和体重,再在 main0函数中利用“person Zhang_three;”语句定义了一个实例。再利用语句“Zhang_three.name="张三"”对数据成员进行赋值,最后将实例的信息输出来。

2.4.1 数据成员

数据成员又叫成员变量或者属性。数据成员的声明方式和变量的声明方式基本相同,格

式为:<数据类型><数据成员名>;

在声明一个数据成员时,需要注意以下两点:

  • 不能采用 auto、extern 和 register 修饰符进行修饰;
  • 只有采用 static 修饰符声明的静态数据成员才可以被显示初始化,它具有特殊的属性若试图在类体中直接初始化非静态数据成员,会导致编译错误。

2.4.2 成员函数

成员函数又叫方法,方法就是函数,当函数被类封装的时候称之为方法。成员函数在类体中的声明方式和普通函数的声明方式相同,成员函数可以在类体内被定义,也可以在类体外被定义。使用方法如程序207.cpp 所示。

//案例名称:在类中定义成员函数
//程序名称: 207.cpp
#include<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
void After_OneYear()
{
height+=10;
weight-=10;
}
};
int main()
{
person Zhang_three;
Zhang_three.name="张三";
Zhang_three.height=175;
Zhang_three.weight=60;
cout<<"\n 张三本来的身高和体重 :"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
Zhang_three.After_OneYear();
cout<<"\n 张三一年后的身高和体重:"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
}

如果在类体外定义成员函数,必须先用域运算符“::”指出该成员函数所属的类。使用的方法如程序 208.cpp 所示。

//案例名称:在类外定义成员函数
//程序名称: 208.cpp
#include<iostream>
using namespace std;
class person
{
public:
char * name;
int height;
int weight;
void After_OneYear();
{
height+=10;
weight-=10;
}
};
Void person::After_OneYear()
{
height+=10;
weight-=10;
}
int main()
{
person Zhang_three;
Zhang_three.name="张三";
Zhang_three.height=175;
Zhang_three.weight=60;
cout<<"\n 张三本来的身高和体重 :"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
Zhang_three.After_OneYear();
cout<<"\n 张三一年后的身高和体重:"<<endl;
cout<<"名字 : "<<Zhang_three.name<<"\n 身高:"<<Zhang_three.height<<"\n 体重:"<<Zhang_three.weight<<endl;
}

最后发现执行的结果和程序207.cpp 相同。如果将成员函数拿到类外定义,仍需要在类内声明函数的原型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yasen.M

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值