C++的基本认识

简单介绍C++

语言特点

支持数据封装和数据隐藏

在C++中,类是支持数据封装的工具,对象则是数据封装的实现。C++通过建立用户定义类支持数据封装和数据隐藏。
在面向对象的程序设计中,将数据和对该数据进行合法操作的函数封装在一起作为一个类的定义。对象被说明为具有一个给定类的变量。每个给定类的对象包含这个类所规定的若干私有成员、公有成员及保护成员。完好定义的类一旦建立,就可看成完全封装的实体,可以作为一个整体单元使用。类的实际内部工作隐藏起来,使用完好定义的类的用户不需要知道类是如何工作的,只要知道如何使用它即可。

支持继承和重用

在C++现有类的基础上可以声明新类型,这就是继承和重用的思想。通过继承和重用可以更有效地组织程序结构,明确类间关系,并且充分利用已有的类来完成更复杂、深入的开发。新定义的类为子类,成为派生类。它可以从父类那里继承所有非私有的属性和方法,作为自己的成员。
支持多态性
采用多态性为每个类指定表现行为。多态性形成由父类和它们的子类组成的一个树型结构。在这个树中的每个子类可以接收一个或多个具有相同名字的消息。当一个消息被这个树中一个类的一个对象接收时,这个对象动态地决定给予子类对象的消息的某种用法。多态性的这一特性允许使用高级抽象。
继承性和多态性的组合,可以轻易地生成一系列虽然类似但独一无二的对象。由于继承性,这些对象共享许多相似的特征。由于多态性,一个对象可有独特的表现方式,而另一个对象有另一种表现方式。

工作原理编辑

C++语言的程序因为要体现高性能,所以都是编译型的。但其开发环境,为了方便测试,将调试环境做成解释型的。即开发过程中,以解释型的逐条语句执行方式来进行调试,以编译型的脱离开发环境而启动运行的方式来生成程序最终的执行代码。

为什么C++支持重载而C语言不支持重载

什么是重载

所谓的重载就是函数的参数不同,函数的函数名相同,返回值可以相同也可以不同.这就是C++的重载.理解了重载接下来就需要回答一下为什么C++支持重载而C语言不支持重载.
我们都知道,所谓的编译性语言都需要经过一下几步才能运行
1.预处理
条件编译,头文件展开,去注释,宏定义,生成一个.i文件
2.编译
检查语法生成汇编代码.生成一个.s文件
3.汇编
将汇编代码转变为既机器代码.生成一个.o文件
4.链接
在链接过程中主要任务是根据函数名称找到对应的函数定义.
编译器在对代码进行编译的过程中会将函数的函数名进重命名.

//代码1
void swap(int a, int b)
{
    ...
}
//代码2
void swap(char a, char b)
{
    ...
}

用上面的swap函数进行举例子吧.在C语言中会将代码一和代码二swap函数都重新命名为_swap,但是在C++中会将代码一函数名重新命名为_z8swapii,代码二函数名重新命名为_z2swapcc,其中_z代表的是函数命名前缀,8代表的是参数字节,swap是函数名称,i代表的是参数的类型,因此在C++中即使函数的名称相同,但是经过编译器的重新命名后,函数的名称就会由于形参的不同而变的不同,因此在编译器的眼里,它们两个函数是不同的,所以也就支持了重载.

猜你喜欢

转载自blog.csdn.net/qq_41027326/article/details/80901124