IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 详解类与对象(上)【c++】 -> 正文阅读

[C++知识库]详解类与对象(上)【c++】

目录

一、面向过程与面向对象初步认识

二、类的引入

三、类的定义

四、类的访问限定符及封装

封装


一、面向过程与面向对象初步认识

c语言是面向过程的,关注的是过程,分析求解问题的步骤,通过函数调用解决问题。一洗衣服为例:

C++是基于对象的,关注的是对象,将一件事拆分成不同的对象,靠对象之间的交互完成。

我们把洗衣机这个对象拆分开来看会有:加水、晃动、甩水等等方法。我们在这里可以理解为:许多个洗衣服需要用到的方法被整合在了洗衣机里面。这就是我们今天需要讲到的类。

二、类的引入

类里面不仅仅只封装了函数,以上面那个洗衣机为例,它的类应该还需要封装洗衣机的型号、容量、进水量等等。这些被称为属性。? 降到这个属性,c语言也有一个语法结构用于封装数据——结构体c++的类就是由c语言里面的结构体升级得来的??。相较于c语言里的结构体,c++就可以封装函数了,这个函数就是我们说的方法。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 另外提一嘴,struct在c++的语法结构下也可以将方法整合进去的。? ? ?

#include<iostream>
using namespace std;
#include<stdlib.h>
typedef int DataType;
struct Stack
{
	void Init(size_t capacity)
	{
		a = (DataType*)malloc(sizeof(DataType) * capacity);
		if (nullptr == a)
		{
			perror("malloc fail");
			exit (-1);
		}
		_size = 0;//命名习惯
		_capacity = 0;
	}
	DataType* a;
	int _capacity;
	int _size;
};
void test()
{
	struct Stack s;
	s.Init(4);
}
int main()
{
	test();
	return 0;
}

?

?代码成功分运行了。

下面是类的写法,与结构体及其相似。

class` Stack
{
	void Init(size_t capacity)
	{
		a = (DataType*)malloc(sizeof(DataType) * capacity);
		if (nullptr == a)
		{
			perror("malloc fail");
			exit (-1);
		}
		_size = 0;
		_capacity = 0;
	}
	DataType* a;命名习惯
	int _capacity;
	int _size;
};

我们习惯在类内部的变量名前加一个"_"以区别这个是类内的数据还是类外的数据。?

三、类的定义

class className
{
    //类体:由函数和成员变量构成
};//注意分号

class是定义类的关键字,ClassName是类的名字,{}是类的主体。

类的定义一般将属性放在类的尾端,这是一种编程习惯,增加代码可读性的。

类的定义有两种:

1.声明和定义都放在类中,需注意:成员函数如果在类中定义,编译器可能会将它当做内联函数处理。

这就是定义在类里面的例子

class Person
{
	void showinfo()
	{
		cout << _name << "-" << _sex << "-" << _age << endl;
	}
	char _name;
	int _sex;
	int _age;
};

2.类声明放在.h文件里面,成员函数声明放在.cpp文件里面,注意:成员函数前要加——类名::

一般来说更推荐第二种定义方式。

四、类的访问限定符及封装

c++实现封装的方式:用类将对象的属性与方法结合到一起,让对象更完善,通过访问权限选择性的将起接口提供给外部的用户使用。

?

1. public 修饰的成员在类外可以直接被访问
2. protected private 修饰的成员在类外不能直接被访问 ( 此处 protected private 是类似的,学习继承后就不一样了 )
3. 访问权限 作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止
4. 如果后面没有访问限定符,作用域就到 } 即类结束。
5. class 的默认访问权限为 private struct public( 因为 struct 要兼容C)

封装

【面试题】

面向对象的三大特性:封装继承多肽

在类和对象的阶段,主要是研究类的封装性,那什么是封装呢?

封装:将数据和操作数据的方法进行有机结合,影藏对象的属性和实现细节,仅对外公开接口来和对象交互。

封装本身是一种管理,让用户更方便管理使用类

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:33:07  更:2022-09-30 00:35:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 5:05:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码