0%

教媳妇儿学C++ No.1 | C++对C的扩展

读前福利:几百本互联网技术书籍送给大家https://mp.weixin.qq.com/s/dFqVQ2qJxvQ0YrIlPISJuw


面向对象

C++ 对 C 的扩展,无论从哪个方面看,最重要的一个方面是 面向对象

面向对象编程(Object-Oriented Programming),简称 OOP,是对于过去 C 面向过程开发的一种新方法,新思想。面向过程的编程语言最直接的特点是所有要运行的代码都包含在好多模块当中,难以阅读和维护。但是在使用 OOP 技术之后,通常提供的代码模块只是提供了特定的功能,彼此独立,更加清晰代码复用率高。有利于后续的升级、维护。

面向对象的三大特征

  • 封装

    把客观事物封装成抽象的类,并且类可以把自己的成员变量和成员方法只让可信的类或者对象进行操作,对不可信的进行隐藏。

    类成员变量和成员方法封装在类内部,根据需要设置访问权限,通过成员函数进行管理内部的状态

  • 继承

    继承所表达的是类之间的相关关系,这种关系使得对象可以继承另外一类对象的特征和能力(成员变量和成员方法)

    继承最大的作用是避免公共代码的重复开发、减少代码和数据冗余

  • 多态

    同样的方法名,不同的方法。程序在运行时候才能够决定要调用的函数,它是整个面向对象编程领域的核心概念

C++ 对 C 的扩展

::作用域运算符

针对局部变量全局变量的使用控制

通常情况下,如果有两个同名变量,一个是全局变量,另外一个是局部变量,那么很显然局部变量的优先级是要高于全局变量的。全局变量会被屏蔽。

看一个案例👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>

using namespace std;

// 全局变量
int a = 10;

void test()
{
// 局部变量
int a = 100;
cout << "a = " << a << endl;
}

int main()
{
test();
return EXIT_SUCCESS;
}

执行结果

1
a = 100

结果是 a = 20,在 test() 方法中定义了 变量 a,并且进行了输出,显然是局部变量的优先级要高于全局变量。

下面我们使用作用域运算符 :: 来调用全局变量 a,解决全局变量和局部变量的重名问题。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>

using namespace std;

// 全局变量
int a = 10;

void test()
{
// 局部变量
int a = 100;
// 打印局部变量
cout << "局部 a = " << a << endl;
// 打印全局变量
cout << "全局 a = " << ::a << endl;
}

int main()
{
test();
return EXIT_SUCCESS;
}

结果:

1
2
局部 a = 100
全局 a = 10

可以看到,作用域运算符 :: 来调用全局变量 a,实现了全局变量和局部变量的重名问题。同时,作用域运算符 :: 可以对同名的全局变量进行访问。

名字控制

在进行对项目开发时候,不可避免的会出现大量的变量名称。那么,在C++中是可以对变量名的可见性进行控制的

在C++中可以通过命名空间对变量名进行控制访问

代码获取

链接: https://pan.baidu.com/s/10oXbCmNLZiLnnFXbzX814A 密码: r98m

最后

在这里给大家准备了几百本的互联网技术类书籍,需要的来下载吧!点击获取
有任何问题,欢迎随时交流!!!

------ 全文结束------