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++既可以定义成员变量,也可以定义成员函数。