C/C++基础(一)

解决问题:

C和C++的区别?

namespace命名空间?

面向对象和面向过程的理解?

面向对象的三大特性?

C++ struct类型的增强?

 

1. C和C++的区别?

C++是在C语言的基础上,添加了面向对象、泛型编程等特性,C++是对C的拓展,两者在语法上和使用上都相似,所以我们统称为"C/C++"。

 

2. namespace命名空间?

在C++中,名称(name)可以是符号常量、变量、函数、结构、枚举、类和对象等等。工程越大,名称相互冲突性的可能性越大。另外使用多个厂商的类库时,也可能导致名称冲突。为了避免,在大规模程序的设计中,以及程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入关键字namespace可以更好地控制标识符的作用域。

namespace是指标识符的各种可见范围。命名空间由关键字namespace来定义,命名空间把单个标识符下的大量有逻辑联系的程序实体组合到一起。此标志符作为此组群的名字。

namespace A{
    int a = 10;
}
namespace B{
    int a = 20;
}
void test(){
    cout << "A::a : " << A::a << endl;
    cout << "B::a : " << B::a << endl;
}

注意:命名空间只能在全局范围内定义。

 

3. 面向过程和面向对象

面向过程编程思想的核心:功能分解,自顶而下,逐层细化。(程序=数据结构+算法)

面向对象中,算法和数据被看做是一个整体,成为对象。(程序=对象+对象+对象+...)

面向对象编程思想的核心:应对变化,提高复用。

 

4. 面向对象三大特性

4.1 封装

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

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

4.2 继承

4.3 多态

多态性可以简单地概括为“一个接口,多种方法”,即多种形态。程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。

 

5. C++ struct类加强

C定义结构体变量需要加上struct关键字,C++不需要。C中结构体只能定义成员变量,不能定义成员函数,C++既可以定义成员变量,也可以定义成员函数。

 

posted @ 2019-03-11 10:05  mungerz  阅读(148)  评论(0编辑  收藏  举报