C++基础 (1-3章)知识点:面向对象和面向过程,对象三大特性,命名空间

【C++】C向C++的知识过度(上) C向C++过度知识,以最基本的hello world!为例讲解C与C++的区别之后讲述了命名空间、C++中的struct结构体与字符串,bool类型等。后续会继续跟进。代码中可能有许多不规范的地方,逻辑可能并不严谨,知识的欠缺还请各位不吝赐教。... 阅读详情
  1. 面向对象和面向过程
    面向过程:以过程为中心的编程思想,通过分析出解决问题所需要的步骤,然后用函数把步骤一步一步实现。
    面向过程核心:功能分解,自顶向下,逐层细化(程序=数据结构+算法)。
    面向过程缺点:语言重用性低,维护困难。

    面向对象:以对象为中心的编程思想,将每个模块对象化只提供特定的功能,每个对象彼此独立。
    面向对象核心:对象=算法+数据结构,程序=对象+对象…
    面向对象缺点:程序复杂,运行效率相对低。

  2. 对象的三大特性
    封装:把客官事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类(派生类)或者对象操作(友元函数),对不可信的进行信息隐藏。
    继承:类之间相关的关系,这种关系使得对象可以继承另外一类对象的特征和能力。(该特性可以避免公用代码的重复开发,减少代码和数据冗余)。
    多态:“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。(virtual)

  3. 命名空间
    3.1 命名空间的创建
    3.2 命名空间只能在全局范围内定义
    3.3 命名空间可以嵌套命名空间
    3.4 命名空间中函数的声明和实现可以分开
    3.5 无名命名空间相当于全局范围的static,只能本文件访问
    3.6 命名空间的别名,可在全局和局部范围内变更命名空间名称
    3.7 using声明的使用方法
    3.8 二义性的产生

#include<iostream>
using namespace std;
//3.1 创建命名空间 
namespace namespaceA {
	int a = 10;
}
namespace namespaceB {
	int a = 20;
}
void namespace_test_3_1()
{
	cout << "3.1" << endl;
	cout << namespaceA::a << endl;
	cout << namespaceB::a << endl;
}

//3.2 命名空间只能在全局范围内定义 
//void namespace_test_3_2()
//{
//	namespace namespaceC {
//		int a = 10;
//	}
//	cout << "3.2" << endl;
//	cout << namespaceC::a << endl;
//}

//3.3 命名空间可以嵌套命名空间
namespace namespaceD {
	int a = 10;
	namespace namespaceE {
		int a = 10;
	}
}
void namespace_test_3_3()
{
	cout << "3.3" << endl;
	cout << namespaceD::a << endl;
	cout << namespaceD::namespaceE::a << endl;
}


//3.4 声明和时间可分离
namespace namespaceF {
	int a = 10;
	int func1();
	int func2(int i);
}
int namespaceF::func1()
{
	return 3.4;
}
int namespaceF::func2(int i)
{
	return i;
}
void namespace_test_3_4()
{
	cout << "3.4" << endl;
	cout << namespaceF::func1() << endl;
	cout << namespaceF::func2(5) << endl;
}

//3.5无名命名空间,只有本文件内可访问,相当于给这个标识符加上了static,使得其可以作为内部链接
namespace {
	int a = 10;
	void func() { cout << "namespace,3.5" << endl; };
}
void namespace_test_3_5()
{
	cout << "3.5" << endl;
	cout << a << endl;
	func();
}

//3.6 命名空间的别名
namespace namespaceG = namespaceA;

void namespace_test_3_6()
{
	cout << "3.6" << endl;
	cout << namespaceG::a << endl;
	cout << namespaceG::a << endl;
}

//3.7 using声明
namespace namespaceH {
	int h = 10;
	void funch() { cout << "namespace,3.5" << endl; };
	void funch(int i) { cout << "namespace,3.5" << i<< endl; };
}
void namespace_test_3_7()
{
	using namespace namespaceH;
//或者 using namespaceH::h;
//	   using namespaceH::funch();
	cout << "3.7" << endl;
	cout << h << endl;
	funch();
	funch(3.7);
}

//3.8 二义性的产生
//void namespace_test_3_8()
//{
//	using namespace namespaceA;
//	using namespace namespaceB;
//	cout << "3.8" << endl;
//	cout << a << endl;	//此时变量a产生二义性,不知是调用namespaceA还是调用namespaceB
//
//}
void main()
{
	namespace_test_3_1(); //3.1 命名空间的创建
  //namespace_test_3_2(); //3.2 命名空间只能在全局范围内定义
	namespace_test_3_3(); //3.3 命名空间可以嵌套命名空间
	namespace_test_3_4(); //3.4 命名空间中函数的声明和实现可以分开
	namespace_test_3_5(); //3.5 无名命名空间相当于全局范围的static,只能本文件访问
	namespace_test_3_6(); //3.6 命名空间的别名,可在全局和局部范围内变更命名空间名称
	namespace_test_3_7(); //3.7 using声明的使用方法
  //namespace_test_3_8(); //3.8 二义性的产生
}
C++面向对象程序设计 从C到C++ C语言是结构化和模块化的语言,它是面向过程的。在处理较小规模的程序时,程序员用C语言较为得心应手。但是当问题比较复杂﹑程序的规模比较大时,结构化程序设计方法就显出它的不足。C程序的设计者必须细致地设计程序中的每一个细节,准确地考虑程序运行时每一时刻发生的事情,例如各个变量的值是如何变化的,什么时候应该进行哪些输入,在屏幕上应该输出什么等。这对程序员的要求是比较高的,如果面对的是一个复杂问题,程序员往往感到力不从心。当初提出结构化程序设计方法的目的是解决软件设计危机,但是这个目标并 阅读详情

相关推荐

第三章 C++之面向对象

C++基础进阶系列文章 目录 第一章 C++之函数 第二章 C++之引用实现游戏对话框显示 第三章 C++之面向对象 第二章 C++之面向对象C++基础进阶系列文章前言一、什么是面向对象二、抽象与类1、C++中的类:2、类的声明3、创建一个类(vs2013)1、LandOwnerV1.h2、LandOwnerV1.cpp3、class-test.cpp4、结果显示三、修饰符四、函数构造五、带参构造六、堆与栈七、this指针总结 前言 面向对象、类和抽象、修饰符、函数构造、带参构造、堆与栈、thi

yechen1的博客 2564

工作笔记

源由面向对象和面向过程思维方式,认识角度的问题 //面向对象 数据 操作 --修改 --检索 --实现 --拷贝 //面向过程 功能 --目的 模式 --方法 归结到二进制,程序的基本实现,就是取址执行。 对与cpu而言,指令也是数据的一种 使劲的抽象实际上就是数据,突然觉得什么回调啊,虚

hao931126的博客 255

如何利用CANoe在两路CAN通道之间创建网关(gateway)

CANoe网关,利用CAPL实现CAN转发

Richy_Lai的博客 7895

侯捷老师 c++面向对象编程(上)

基于侯捷老师的C++面向对象编程课程,做的c++笔记。

我的学习笔记分享 1411

基于WEB的报价管理系统的设计与实现

该系统采用B/S模式,后台运用SpringMVC和MyBatis搭建,利用MySQL数据库,来组织存储和管理数据,使用tomcat服务器向外提供服务。使用该系统对外有利于提高企业的综合竞争力,对内有利于提高成本管理和控制的水平,简化了报价流程、提高了工作效率、精简了报价机构,降低了成本。研究和掌握必要的信息采集和数据查询技术,是各个企业,事业单位信息化的一个重要标志。当前大多数企业采取的报价方式仍然是用EXCEL表格和人工的方式,这不仅不利于大量数据的总结,更不利于对销售利润的控制。

m0_60918862的博客 999

Rust 与 C/C++:Rust 比 C/C++ 更好还是只是“技能问题”?

对于许多嵌入式系统开发人员而言,的崛起似乎掀起了一股不小的浪潮,特别是在相较于传统的语言,Rust的“内存安全”优势让人眼前一亮。然而,是否可以将Rust作为C/C++的替代品?或者说,Rust是否真的比C/C++更好,抑或它只是一个“技能问题”呢?在嵌入式开发的领域,我观察到,尽管Rust在一些高性能、内存安全敏感的场景中受到了广泛推崇,但它在实际应用中的普及度,特别是在嵌入式领域,依然有限。今天,我会从多个角度探讨这个问题,并且分享一些对于Rust、C/C++以及嵌入式系统开发的个人见解。

qq_63315166的博客 1300

面向过程和面向对象及面向对象的三大特征

新手继续,大牛可以关闭浏览页了。 英文及缩写:   面向过程:procedure oriented programming POP   面向对象:object oriented programming OOP 面向对象和面向过程的历程:   面向过程编程采取的是时间换空间的策略,因为在早期计算机配置低,内存小,如何节省内存则成了首要任务,哪怕是运行的时间更长。随着硬件...

aq8008的博客 397

LangFlow开源神器:拖拽构建AI Agent与MCP协议集成实战

LangFlow 15万星开源神器:拖拽搭建 AI Agent,一键部署 API / MCP / JSON 在AI应用开发领域,传统编码方式往往需要处理复杂的API调用、数据处理和流程编排,这让很多开发者望而却步。LangFlow作为GitHub上获得15万星的开源项目,通过可视化拖拽的方式彻底改变了AI Agent的开发体验。本文将完整介绍如何使用LangFlow快速构建功能强大的AI Agent,并实现API、MCP协议和JSON配置的一键部署。 1. LangFlow与AI Agent核心概念解析 1

weixin_33717117的博客 933

C++一些基本概念总结【面向过程篇】——函数

本文主要总结【函数】相关概念。 函数定义一般形式如下: 返回类型 函数名(参数列表) {        函数体 } 注意: (1)如果参数列表中没有参数,称之为无参函数 (2)函数中用return返回返回值。如果没有返回值,返回类型为void;如果没有明确指定类型,默认返回类型为int (3)C++不允许函数嵌套定义 如下是非法的 void f1() {

code_caq的博客 515

DeepSeek的训练与优化流程

DeepSeek的训练体系不仅追求极致的计算效率,更注重将物理规律、人类知识、安全伦理深度融入训练过程,其"效率-安全-可解释性"三角平衡的设计理念,为行业提供了重要参考范式。

m0_56896669的博客 1434

LTspice进阶技巧-031.一键加密仿真模型:LTspice Encrypt Tool实战指南

本文详细介绍了LTspice Encrypt Tool的使用方法,帮助工程师一键加密LTspice仿真模型,保护知识产权。通过图形化界面简化操作流程,支持批量加密和兼容性处理,适用于电路设计中的模型保护需求。

weixin_28304023的博客 202

面向对象之【探索C++】硬核 | 造轮子的快乐源泉【开篇】

“c++”中的++来自于c语言中的递增运算符++,该运算符将变量加1。c++起初也叫”c with clsss”.通过名称表明,c++是对C的扩展,因此c++是c语言的超集,这意味着任何有效的c程序都是有效的c++程序。c++程序可以使用已有的c程序库。​ 库是编程模块的集合,可以在程序中调用它们。库对很多常见的编程问题提供了可靠的解决方法,因此可以节省程序员大量的时间和工作量。c++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++继承了c语言高效,简洁,快速和可移植的传统。c++融

choice~的博客 1464

电子纸价签实战:基于SSD1680的墨水屏驱动开发与优化

本文详细介绍了基于SSD1680驱动芯片的电子纸价签开发实战,涵盖硬件连接、驱动框架搭建、核心流程解析及性能优化。重点剖析了初始化配置、波形文件加载、图像数据写入与刷新触发等关键步骤,并提供了功耗优化、显示效果提升及代码健壮性等实用避坑指南,帮助开发者高效实现稳定低功耗的墨水屏驱动。

weixin_28278377的博客 226

【C++】面向对象编程的三大特性:深入解析继承机制

本文将深入解析面向对象编程的三大核心特性,特别是对继承机制的详细探讨。通过对这些概念的优化理解,帮助读者更好地掌握面向对象编程的精髓。

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 3709

刷爆 Java 基础!1000 道经典面试题精解第一篇【序列化】

自定义序列化 / 反序列化的实现方式在实现接口的类中,手动重写和方法在方法内优先调用执行默认序列化逻辑;追加自定义逻辑(如敏感数据加密、临时字段赋值、兼容旧版本数据等)。// 序列化ID,保证兼容性// 敏感字段,默认不序列化,自定义处理// 自定义序列化// 执行默认序列化:写入username// 自定义逻辑:密码加密后写入// 自定义反序列化// 执行默认反序列化:读取username// 自定义逻辑:读取加密密码并解密// 模拟加密/解密工具方法。

七叔的博客 191

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【C++】面向对象编程的三大特性:深入解析多态机制

本文将深入解析面向对象编程的三大核心特性,特别是针对多态机制的使用和实现原理进行详细探讨。通过对这些概念的深入理解,帮助读者更好地掌握面向对象编程的精髓。

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 3325

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

【C++专栏】C++入门 | 类和对象 | 面向过程与面向对象的初步认识

面向过程是一种编程范式,它将程序按照步骤或者流程进行组织,重点关注解决问题所需的具体步骤和操作。面向过程编程将程序设计为一系列的函数或子程序,每个函数都是对一系列操作的封装。顺序执行:程序按照自上而下的顺序逐步执行,每个步骤都依赖于前面的结果。函数和子程序:将程序划分为多个函数或子程序,每个函数或子程序都负责完成一个具体的任务。数据和函数的分离:面向过程编程将数据和操作分离,数据在程序中作为全局变量或者传递给函数进行处理。

小黄鸭的博客 1339

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【C++】初识面向对象:类与对象详解

本章将介绍C++中一个重要的概念——类。通过类,我们可以类中定义成员变量和成员函数,实现模块化封装,从而构建更加抽象和复杂的工程。

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 2603

【第一天】C++面向对象程序设计-基础入门(超详细)

C++是对C的扩展,任何有效的c程序都是有效的c++程序,c++程序可以使用已有的c程序库。 C++语言在c语言的基础上添加了面向对象编程和泛型编程的支持。c++融合了3种不同的编程方式:c语言代表的过程性语言.c++在c语言基础上添加的类代表的面向对象语言.c++模板支持的泛型编程。我们常常将这两门语言统称为“C/C++”。

m0_75045191的博客 1721

探索c++——了解c++的魅力

那么这个被调用的函数就会。

strive_mianyang的博客 4618

3、CPP面向对象之—— 类、对象(封装),继承

面向对象一、面向对象1、类和对象2、对象内存3、this4、封装二、内存空间1、内存空间2、堆内存堆空间的初始化3、成员变量的初始化三、构造函数(constryctor)1、构造函数的调用四、析构函数(Destructor)1、内存清理五、程序优化1、声明和实现分离2、命名空间怎么使用命名空间?思考命名空间的嵌套、合并六、继承1、继承的内存布局2、成员访问权限、继承方式七、初始化列表1、思考:初始化列表的本质2、思考:**初始化的先后顺序**3、初始化列表与默认参数配合使用八、再论构造函数1、构造函数的互相

vincent3678的博客 3302

从C语言到C++:面向对象三大特性之封装

本文介绍了C++面向对象编程的三大特性之一:封装。首先对比了C与C++的基本语法差异,如头文件和命名空间的使用。重点讲解了类的概念,包括类与对象的关系、访问权限控制(public/private/protected)及其应用场景。详细说明了构造函数(普通构造、带参构造、拷贝构造)和析构函数的特性与作用,强调它们会被自动调用的特点。通过具体代码示例,展示了如何定义类、创建对象以及使用不同权限成员的方法。文章旨在帮助有C语言基础的读者快速理解C++面向对象编程的核心概念。

myingrid的博客 1656

【C++入门到精通】C++入门 —— 类和对象(了解类和对象)

前面我们讲了C语言的基础知识,也了解了一些数据结构,并且讲了有关C++的命名空间的一些知识点以及关于C++的缺省参数、函数重载,引用 和 内联函数。也相信大家都掌握的不错,接下来博主将会带领大家继续学习有关C++比较重要的知识点——类和对象。下面话不多说坐稳扶好咱们要开车了。class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:🔴类中的变量称为类的属性或成员变量;🔴类中的函数称为类的方法或者成员函数。

Yawesh的博客 1418

类和对象 | 面向过程与面向对象的初步认识

面向过程是一种编程范式,它将程序按照步骤或者流程进行组织,重点关注解决问题所需的具体步骤和操作。面向过程编程将程序设计为一系列的函数或子程序,每个函数都是对一系列操作的封装。顺序执行:程序按照自上而下的顺序逐步执行,每个步骤都依赖于前面的结果。函数和子程序:将程序划分为多个函数或子程序,每个函数或子程序都负责完成一个具体的任务。数据和函数的分离:面向过程编程将数据和操作分离,数据在程序中作为全局变量或者传递给函数进行处理。

小黄鸭的博客 1300

【C++】踏上C++学习之旅(一):初识C++和命名空间

本文主要讲解了C++的历史,重点讲了C++种命名空间的意义和用法!!!快来看看吧!

tianxiawushanu的博客 3116

【C++】类和对象(上篇)

C++类和对象 this指针

Suk_god的博客 4706
上一篇: 文件解析出数据帧
下一篇: C++基础 (番外篇)关键字考点
瓜皮张先生
博客等级 码龄8年 23粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值