C++学习笔记(面向对象篇)

记录c++学习的新概念


目录

目录

目录

1.类(Class)

C和C++的程序设计思想的区别:

面向对象程序设计思想的重要概念:

类的定义

成员访问控制


1.类(Class)

C和C++的程序设计思想的区别:

C语言--面向过程的程序设计思想
自顶向下,逐步求精;
一个main函数+若干子函数。
C++语言--面向对象的程序设计思想
实现软件设计的产业化;
自然界是由实体(对象)组成的;


面向对象程序设计思想的重要概念:

(1)抽象:对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。
数据抽象:例如某个人的信息。
行为抽象:例如某个人的行为。
(2)封装:将抽象出的数据成员、行为成员相结合,将他们视为一个整体--类。
使用者不需要了解具体的实现细节,只需要通过接口使用类的成员即可。
(3)继承与派生:保持原有类特性的基础上,进行更具体的说明。


类的定义

类(class)是用户自定义数据类型。如果程序中要使用类类型(class type),必须根据实际需要定义,或者使用已设计好的类。

C++定义一个类,其方法与定义一个结构体类型是相似的,一般形式为:

class 类名 {  //类体
    成员列表
};


其中成员列表(memberlist)是类成员的集合,数目可以任意多由具体应用确定。一对大括号{}是成员列表边界符,与成员列表一起称为类体(class body)。类体后面必须用分号(;)结束。

ps:1 每个类可以没有成员,也可以有多个成员。
2 类成员可以是数据或函数。
3 所有成员必须在类的内部声明,
一旦类定义完成后,就没有任何其他方式可以再增加成员了

 

类定义时必须给出各个数据成员(data member)的数据类型声明,其一般形式为:

class 类名 {  //类体
数据成员类型 数据成员名列表;  //数据成员声明
}

声明时成员名列表允许为多个,用逗号()作为间隔,最后必须用分号(;)结束。

ps:1 每个类还可以包含成员函数,能够访问类自身的所有成员。
2 面向对象程序设计一般将数据隐蔽起来,外部不能直接访问,而
把成员函数作为对外界的接口,通过成员函数访问数据。即数据成员是属性,成员函数是方法,通过方法存取属性。
3 如果类中有成员函数,则声明成员函数是必需的,而定义成员函数则是可选的,因此类的成员函数有两种形式。


①在类中定义(也是声明)成员函数,形式如下

class 类名 { //类体
...
返回类型 函数名(形式参数列表)    //成员函数定义
{
函数体
}
...
}

②成员函数的声明在类中,定义在类外部,形式:

class 类名 { //类体
...
返回类型 函数名(类型1 参数名1,类型2 参数名2,…) //成员函数声明返回类型 
函数名(类型1,类型2,…);
...
};
返回类型 类名::函数名(形式参数列表) //成员函数定义在类外部实现
{
函数体
}

ps:类定义一般放在程序文件开头或者放到头文件中被程序文件包含,此时这个定义是全局的。在全局作用域内,该定义处处可见,因此同作用域内的所有函汝都可以使用它。
类定义也可以放到
函数内或局部作用域中,此时这个定义是局部的。若在函数内部有同名白类定义,则全局声明在该函数内部是无效的,有效的是局部定义为。

C++规定,在局部作用域中声明的类,成员函数必须是函数定义形也式,不能是原型声明。一般的,由于类是为整个程序服务的,因此很少有将类放到局部作用域去定义。
类定义向编译器声明了一种新的数据类型,该数据类型有不同类型的数据成员和成员函数。因此尽管数据成员类似变量的定义,但类型声明时并不会产生该成员的实体,即为它分配存储空间。


成员访问控制

对类的成员进行访问,来自两个访问源:类成员类用户
类成员指类本身的成员函数,类用户指类外部的使用者,包括全局类成员指类本身的成员函函数、另一个类的成员函数等。

无论数据成员还是函数成员类的每个成员都有访问控制属性,由以下三种访问标号说明:public(公有的)private(私有的)protected(保护的)
1 公有成员用public标号声明类成员和类用户都可以访问公有成员,任何一个来自类外部的类用户都必须通过公有成员来访问。显然,public实现了类的外部接口。

2 私有成员用private标号声明只有类成员可以访问私有成员,类用户的访问是不允许的。显然private实现了私有成员的隐蔽。

3 保护成员用protected标号明,在不考虑继承的情况下,protected的性质和private性质一致,但保护成员可以被派生类的类成员访问。

成员访问控制是C++的类和结构体又一个重要特性。加上访问标号,类定义更一般的形式为:

class 类名{    //类体
public:    //公有访问权限
公有的数据成员和成员函数
protected:    //保护访问权限
保护的数据成员和成员函数
private:    //私有访问权限
私有的数据成员和成员函数
}

ps:如果没有声明访问控制属性,类所有成员默认为private,即私有的。


(1)在定义类时,声明为public、private或protected的成员的次序任意
(2)在一个类体中
不一定都包含public、private或protected部分,可以只有public、private、protected部分或任意组合。

(3)关键字public、private、protected可以分别出现多次,即一个类体可以包含多个public、private或protected部分。但更通用的做法是将相同访问控制属性的成员集中在一起来写
(4)实际编程中,为了使程序清晰,每一种成员访问限定符在类体中只出现一次,且按照public、protected、private顺序组织,形成访问权限层次分明的结构。


9.8



注:本笔记内容根据中国大学慕课-西北工业大学-魏英老师-C++程序设计课件汇总编写。

课程链接:C++程序设计_西北工业大学_中国大学MOOC(慕课)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值