C++学习笔记:类和对象

类和对象

1、类和对象

,即类别:是具有相似属性和行为的一组实列的集合
对象,计算机中,类的实例就是对象

类更像是一个集合,比如鸟类、人类等
对象就是集合中的元素,比如鸟类:麻雀、斑鸠;人类:张三、李四…

上面说:“类是相似属性和行为的一组实例的结合”。
拿人类举例:姓名、年龄……是他们都有的属性
吃饭、睡觉……是他们都有的行为

2、面向对象

面向对象(OOP)是软件开发方法,一种编程范式。

  • 面向过程:分析出解决问题所需的步骤,然后用函数把这些步骤一步一步实现,使用时一个一个依次调用就可以了。
  • 面向对象:是把构成问题事物分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描述某个事物在整个解决问题的步骤中的行为。

四大特征(面试可能会问)

面向对象主要有四大特征:抽象、封装、继承、多态。

**抽象:**把事物具有的属性和行为(共同特征)总结提纳出来

**封装:**把这些属性和行为写成一个类,同时,把这些数据信息和访问、修改这些数据信息的方法结合起来;让使用者只能用你写的特定的函数方式去访问这些数据信息;起到把数据信息隐藏起来的效果。

**继承:**继承是从已有的类的信息中创建新的类,同时继承也是封装程序中可变因素的重要手段。子类继承父类属性(静态特征)和方法(动态特征),继承必须遵循封装当中的控制访问

**多态:**多态是指允许不同类的对象对同一消息做出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活/抽象/行为共享/代码共享的优势,很好的解决了应用程序函数同名问题。总的来说,方法的重写,重载与动态链接构成多态性。

动态链接 -->对于父类中定义的方法,如果子类中重写了该方法,那么父类类型的引用将调用子类中的这个方法,这就是动态链接。

3、类的创建

在C语言中,我们会用到struct(C++也可以用)
C++中。我们通常会用class来创建类

我理解的创建一个类,就是定义一个结构体,把表示同一个事物的东西定义在一起

类中除了可以定义成员变量(属性)之外,还可以定义成员函数(方法),类还可以设置访问权限,可以控制类中的成员在何处能访问。

三个访问权限限定符:用来设置成员变量和成员函数的访问属性。

  • public:公有成员,它们允许被本类或其它类的成员函数(通过对象)访问或调用,是类的外部接口,成员函数一般定义为public属性;
  • private:私有成员,它们只允许被本类的成员函数访问,数据成员一般定义为private属性;
  • protected:保护成员,它们允许被本类的成员函数和派生类的成员函数访问或调用。

关于class和struct
class:默认为是私有的(类外部不可访问)
struct:默认为是公有的(类外部也可访问)

#include<iostream>
using namespace std;
/*
*Girl 女孩
*1、抽象:
* 1.1数据(属性、成员变量):年龄、姓名、性别、三围、身高……
* 1.2行为(方法、成员变量):打扮、吃饭、睡觉……
* 2、封装:把数据和行为组织在一起 用结构体进行封装
*/

//struct 定义的类默认是公有的
//class定义的类默认是私有的(要访问得,加上public)
  /*
权限访问限定符:指定成员在外部能不能被访问
public(公有):在所有得地方都能被访问(自己、类外、子类)
private(私有):只能在自己得内部被访问
protected(保护):只能在自己的内部或者子类的内部被访问
*/
  class Girl     //C++不需要取别名
  {
  private:
  //成员变量
	/*命名规则1、在每个成员变量的前面加上m_前缀
	          2、在每个成员变量后面加上_  */
	int m_age;
	char name_[10];

  public: 
	//成员函数
	void init(int age, const char* name)
	{
		m_age = age;
		strcpy(name_, name);
	}
	void print()
	{
	  cout<<m_age << "  " << name_<< endl;
	}
};

int main()
{
	Girl girl;
	girl.init(18, "aqua");
	//cout << girl.age << endl;  私有的,不能直接访问信息
	girl.print();     //只能通过限定的方式访问信息
}

4、类的定义和成员函数定义分离

一般将类的定义放在头文件(.h) 中,类的实现放在源文件(.cpp) 中,而main主函数可以放在另一个源文件中。

何谓分离?即把函数的定义放在类的外部实现!

成员函数的定义方式与其他函数的定义方式基本相同,但必须在成员函数名前面加上类名和作用域限定符(简称域运算符)

即:类名::函数名

在这里插入图片描述在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值