黄页网络的推广网站有哪些类型,做a短视频网站,上海网站建设导航,建网站注册文章目录 前言一.初步认识面向过程和面向对象编程1.面向过程编程初步认识2.面向对象编程初步认识 二.C类1. 类的引入#xff1a;2. 类的定义3.类的访问限定符封装3.1 访问限定符3.2 封装 4.类的实例化5.如何计算类的大小 总结C语言系列学习目录 前言 面向对象编程 类… 文章目录 前言一.初步认识面向过程和面向对象编程1.面向过程编程初步认识2.面向对象编程初步认识 二.C类1. 类的引入2. 类的定义3.类的访问限定符封装3.1 访问限定符3.2 封装 4.类的实例化5.如何计算类的大小 总结C语言系列学习目录 前言 面向对象编程 类与对象 一.初步认识面向过程和面向对象编程
1.面向过程编程初步认识
C语言是面向过程的关注的是过程分析出求解问题的步骤通过函数调用逐步解决问题。 面向过程编程Procedural Programming 是一种编程范式它依赖于过程调用来实现程序的逻辑。它把程序视作一系列的程序执行步骤或者说是函数调用序列。这种方法强调的是在程序中执行一系列的计算步骤或者操作序列而不像面向对象编程那样强调数据的抽象和封装。
与面向对象编程相比面向过程编程通常更简单直接适合于小型至中等规模的项目或者特定类型的应用如脚本编写和系统工具。然而对于大型和复杂的应用程序缺乏抽象和封装可能导致代码难以管理和扩展。
C是基于面向对象的关注的是对象将一件事情拆分成不同的对象靠对象之间的交互完成。
2.面向对象编程初步认识
面向对象编程Object-Oriented ProgrammingOOP是一种编程范式它使用“对象”来设计应用程序和计算机程序。它侧重于数据抽象、封装、多态性和继承等概念。下面是面向对象编程的一些基本原则和概念 类Class类是对象的蓝图或者模板它定义了一组具有相同属性字段或变量和行为方法或函数的对象的通用特性。 对象Object对象是类的实例。每个对象都包含了类定义的数据和行为具有独立的属性值也可以称为状态是程序操作的基本单位。 属性Attribute属性是对象的状态用变量表示。它们是存储在类或对象中的数据。 方法Method方法表示对象可以执行的操作是与对象相关联的函数。 封装Encapsulation封装是把对象的实现细节隐藏起来仅对外提供一个公共的接口。通过访问控制private、protected、public我们可以控制对象属性和方法的访问级别。 继承Inheritance继承允许一个类继承另一个类的特性即子类可以继承父类的属性和方法。这样可以实现代码复用并建立类之间的层次关系。 多态性Polymorphism多态性允许不同类的对象以统一的接口被处理。例如通过覆盖overriding和重载overloading方法不同的对象可以用相同的方法名实现不同的功能。 抽象Abstraction抽象是简化复杂的现实问题的一种手段它允许开发者聚焦于高级操作而忽略底层的细节。抽象可以通过抽象类和接口来实现。
通过使用面向对象的方法程序员能够以更直观的方式构建和理解复杂的系统因为它们可以利用现实世界中的类比来设计系统的组件。大型软件项目通常易于管理因为OOP提供的模块化使得编程更加组织化代码也更易于维护和调试。面向对象编程广泛应用于许多不同类型的语言如Java、C、Python、Ruby和C#等。
二.C类
1. 类的引入
在C语言中我们写结构体struct只能定义变量。在C中结构体不但可以定变量还可以定义函数。这是因为我们把struct当成与类相近的关键字了。在C中我们更喜欢用class关键字来定义结构体等。
2. 类的定义
class为定义类的关键字ClassName为类的名字{}中为类的主体注意类定义结束时后面分号不能省略。
类体中内容称为类的成员类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
class className
{
// 类体由成员函数和成员变量组成
}; // 一定要注意后面的分号类有两种定义方式 声明和定义全部放在类体中需注意成员函数如果在类中定义编译器可能会将其当成内联函数处理。 类声明放在.h文件中成员函数定义放在.cpp文件中注意成员函数名前需要加类名:: 一般情况下更期望采用第二种方式。第一种方式更方便第二种定义更符合工作所需。
3.类的访问限定符封装
3.1 访问限定符
C实现封装的方式用类将对象的属性与方法结合在一块让对象更加完善通过访问权限选择性的将其接口提供给外部的用户使用。 【访问限定符说明】
public修饰的成员在类外可以直接被访问protected和private修饰的成员在类外不能直接被访问(此处protected和private是类似的)访问权限作用域从该访问限定符出现的位置开始直到下一个访问限定符出现时为止如果后面没有访问限定符作用域就到 } 即类结束。class的默认访问权限为privatestruct为public(因为struct要兼容C) 注意访问限定符只在编译时有用当数据映射到内存后没有任何访问限定符上的区别
【面试题】 问题C中struct和class的区别是什么 解答 C需要兼容C语言所以C中struct可以当成结构体使用。另外C中struct还可以用来定义类。和class定义类是一样的区别是struct定义的类默认访问权限是publicclass定义的类默认访问权限是private。 注意在继承和模板参数列表位置struct和class也有区别后序给大家介绍
3.2 封装
封装将数据和操作数据的方法进行有机结合隐藏对象的属性和实现细节仅对外公开接口来和对象进行交互。 封装本质上是一种管理让用户更方便使用类。比如对于电脑这样一个复杂的设备提供给用户的就只有开关机键、通过键盘输入显示器USB插孔等让用户和计算机进行交互完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。 在C语言中实现封装可以通过类将数据以及操作数据的方法进行有机结合通过访问权限来隐藏对象内部实现细节控制哪些方法可以在类外部直接被使用。
总结封装主要两个方面数据隐藏更安全和提供接口方便用户交互使用。
4.类的实例化
用类类型创建对象的过程称为类的实例化
类是对对象的描述是一个模型一样的东西限定了类的成员。比如我们要描述一个学生他就有很多属性名字学号性别等等属性但没有给定具体数据类只是个模板。一个类可以实例化多个对象。类是一个模板没有具体数据可以实例化多个对象。类并不会分配具体的内存空间来存储它。只是模板属性并没有数据。
5.如何计算类的大小
其实这一点我们在C语言便知道了内存对齐。 实例计算下方类的大小。
// 类中既有成员变量又有成员函数
class A1 {
public:void f1(){}
private:int _a;
};
// 类中仅有成员函数
class A2 {
public:void f2() {}
};
// 类中什么都没有---空类
class A3 {};运行结果
结论一个类的大小实际就是该类中“成员变量”之和当然要注意内存对齐成员函数不占内存。注意空类的大小空类比较特殊编译器给了空类一个字节来唯一标识这个类的对象。 总结
此篇博客为简要介绍面向过程与面向对象的概念及区别类的实例化对象、定义、封装、以及类的大小。 C语言系列学习目录 提示这里可以添加系列文章的所有文章的目录目录需要自己手动添加添加超链接