6.1.2类与对象

面向对象程序设计的核心任务是:

类的确定和对象的创建

  • 好处:
  1. 写程序不再是从计算机的角度考虑问题了,而是站在 人类思维的角度
  2. 程序的可扩展性要比其他不是面向对象的程序设计语言好。
  3. 能最大限度保护已有程序代码。
面向对象的方法
  • 目的:
    实现软件设计的产业化

  • 观点
    自然界是由实体(对象)所组成。

一、类
  • 类的组成

数据成员&成员函数

  • 类的声明

class 类名称
{ public:
公有成员(外部接口)
private: 私有成员
protected: 保护型成员
} ;

数据成员:

 类的任何成员都必须指定访问属性。
将数据成员定义为私有成员或保护成员
将成员函数定义为公有成员。

private:只能由

1.该类中的函数、
2.其友元函数访问。
不能被任何其他访问,该类的对象也不能访问。

protected:可以被

1.该类中的函数、
2.派生类的函数
3.其友元函数访问。
但不能被该类的对象访问。

public:可以被

1.该类中的函数、
2.派生类的函数、
3.其友元函数访问,
4.该类的对象访问。

class Clock
{
public: 
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();//成员函数
private: 
int Hour, Minute, Second;//成员数据
};
- 如果紧跟在类名称的后面声明私有成员,则关键字private可以省略:
class Clock
{ int Hour,Minute,Second;
public:
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
};
一般的,数据成员定义为私有成员或保护成员, 成员函数定义为公有成员。
  1. 类中的数据成员可以是C++语法规定的任意数据类型,但
    不能用存储类型auto、register或extern进行修饰。
  2. 类的成员可以是其他类的对象,但不能以类自身的对象作
    为本类的成员。
  3. 类定义必须以分号“;”结束
  4. class与struct的不同:
    ①class中,成员缺省情况是private。
    ②struct中,成员缺省情况是public。
成员函数
1、成员函数在类外定义的一般形式是:

返回类型 类名成员函数名(参数表)
{
// 函数体
}
 也可以直接在类内给出函数体,形成内联成员函数。
 允许声明重载函数带默认形参值的函数

class Clock
{
public: 
void SetTime(int NewH, int NewM, int NewS);
void ShowTime();
private: 
int Hour, Minute, Second;
};

void Clock::SetTime(int NewH, int NewM,int NewS)//SetTime函数类外定义
{
Hour=NewH;
Minute=NewM;
Second=NewS;
}

二、对象

1、声明形式:

类名 对象名
clock myclock

  • (1)在声明类的同时,直接定义对象,即在声明类的右花括号“}”后,直接写出属于该类的对象名表。
  • 例如:
class Coord {
public:
void setCoord(int,int);
int getx();
int gety();
private:
int x,y; }op1,op2;

  • (2)声明了类之后,在使用时再定义对象,定义的格式与一般变量的定义格式相同,
  • 例如:
  • class Coord { //… }; // … main() { Coord op1,op2; // … }
2、访问方式:
  • 类中成员互访
    直接使用成员名

  • 类外访问
    使用“对象名.成员名”的方式访问public属性的成员

3、对象成员的引用:
- 通过对象名和成员运算符访问对象成员

一般形式: 对象名.成员名

例如:

stud1.num=100;
stud1.display();

在类外只能访问public成员,不能访问private成员。

- 通过指向对象的指针访问对象中成员

一般形式:指针名->成员名

如:

student stud1,*p;
p=&stud1;
cout<<p->num;

p->num, (*p).num, stud1.num三者等价.

- 通过对象的引用访问对象中成员

如:

student stud1;
student &stud2=stud1;
cout<<stud2.num;
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值