「C++」类与对象1

  • 类的引入

我们都知道C语言是一门面向过程语言,而C++是一门面向对象的语言,那么何为面向过程、面向对象呢?面向过程就是关注的是过程,分析求解问题的步骤,通过调用函数逐步解决问题,而面向对象关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。
在C语言中我们用关键字struct来定义结构体,结构体只能定义变量,那我们要定义函数怎么办呢,在C++中结构体内不仅可以定义变量也可以定义函数,并且C++中更喜欢使用关键字class来代替。

  • 类的定义

怎么定义一个类呢?格式参照如下

class classname//类的名字
{
    
    
	//类体:成员变量和成员函数组成
};

类中的元素叫做类的成员,类中的数据称作类的属性或者成员变量,类中的函数称作类的方法或者成员函数,我更喜欢分别称作成员变量和成员函数。
类的两种定义方式:
1.声明和定义全部放在类体中,需要注意的是成员函数如果在类中定义,编译器可能会将其当成内联函数处理。

class person
{
    
    
	public:
	void show()//声明和定义全部放在类体中
	{
    
    
		cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;
	}
	public:
	char* _name;
	char* _sex;
	int _age;
};

2.声明放在.h头文件中,类的定义放在.cpp文件中(推荐方式)

//person.h文件
class person
{
    
    
	public:
	void show()
	public:
	char* _name;
	char* _sex;
	int _age;
};

//person.cpp
#include"person.h"
void person::show()
{
    
    
	cout<<_name<<"-"<<_sex<<"-"<<_age<<endl;
}
  • 类的访问限定符及封装

先提出问题:C++中struct和class有什么区别?
C++需要兼容C语言,所以在C++中struct可以当成结构体用,同时也能定义类,和class定义类是一样的,区别是struct中成员默认的访问方式是public,而class中的成员默认访问方式是private。

这里引入了public和private,这就是类的访问限定符,类的访问限定符一共三种分别是:public(公开)、private(私有)和protected(保护)。
访问限定符说明:

  • public修饰的成员在类外可以被直接访问
  • protected和private修饰的成员在类外不能直接被访问(两者相似)
  • 访问权限作用域从该访问限定符出现的位置开始直到下个访问限定符出现时为止
  • 访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别

所以我们能想到C++实现封装的方式是用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。
封装实质上是一种管理,和博物馆的管理是类似的,如果一堆文物就放在一个地方供人随便看,没有管理可能一段时间后东西就都没了,所以才会建造博物馆将这些文物封装起来,目的不是全部封装起来不让人看,所以开设了售票通道,让大家在有人监管的情况下去参观,并且也不是所有文物都能看,有些文物是不能看的也就是被彻底封装起来了。这和类是一样的,不想让人看到的使用private/protected把成员封装起来,开放一些公有的成员供访问,所以说封装的本质是一种管理。

猜你喜欢

转载自blog.csdn.net/NanlinW/article/details/103169380