C++现认识

    为了进一步方便编程,人们开发了更加接近人类自然语言习惯的高级语言,高级语言由编译器的翻译程序将它变成相应的机器语言程序。

    面向对象的程序设计语言是为了支持面向对象程序设计方法而设计的语言,它与以往各种编程语言的根本不同点在于,其设计的出发点就是为了能更加直接的描述客观世界中存在的事物(及对象)以及它们之间的关系。面向对象程序设计语言支持抽象数据类型,并且提供了封装、继承、多态等机制,使得类和类库成为可重用的模块。

    C++语言是由C语言发展而来的,用C语言编写的众多库函数和实用软件可方便地移植到C++中。C++语言保持了C语言的简洁、高效和在某些操作上沿用了汇编语言指令的特点,用C写的程序基本可以不加修改的用于C++,但与C相比,它有自己的特点:

    1.支持面向对象的程序设计

    C++语言包括了几乎所有的支持OOP的语法特征,C++的封装和信息隐藏,把数据和功能封装到类和对象中;C++通过泛型和继承的方式实现了重用和多态,提高了编程效率;C++通过函数和运算符重载,提高了程序的适应性和灵活性。

    2.支持泛型程序设计

    泛型是指向程序中数据类型中加入类型参数的一种能力,也称为参数化的类型或参数多态性。例如,list是一个数组,但它不像一般数组那样,每个元素都是确定类型,list的元素可以是整型、实型、字符型等,当使用list泛型数组时会给程序设计带来很多灵活性,增强了程序的适应能力。

    泛型程序设计是指在程序设计时,将数据类型参数化,编写具有通用性和可重用的程序。对泛型程序设计的支持是C++一个明确、独立的设计目标。C++通过函数模板和类模板实现了类型和函数定义的参数化,保证了面向对象的程序设计和泛型程序设计的有机统一。

    3.功能强大的标准模板库

    C++的标准模板库不仅提供了丰富的、标准的数据结构和算法,而且通过泛型思想组织软件结构,提高了C++语言的抽象能力。

    4.是一种更好的"C语言"

    C++语言是C语言的超集,C++语言引入了内联函数(inline)概念取代了C语言的宏定义。引入引用(reference)的概念,部分取代C语言中过于灵活而影响安全性的指针;引入动态内存运算符new和delete,分别取代C语言中比较低级的内存分配函数;引入数据输入输出I/O流,取代了C语言中繁琐的格式化输入输出函数。C++语言还对C语言的类型进行了系统的改革和扩充,堵塞了C语言中的许多漏洞,C++编译提供了更好的类型检查和编译时的分析,能检查出更多的类型错误,改善了C语言的安全性。


    下面简单列举一下C++的数据类型:






    再来探讨一下++、--运算符,无论是前置还是后置,这两个运算符的作用都是使操作数的值增1或者减1,但对由操作数和运算符组成的表达式的值的影响却完全不同。例如:

    前置形式:

    int i=5;x=++i;y=i;   此时i=6,x=6,y=6.

    int i=5;++i;x=y=i;   此时i=6,x=y=6.

    后置形式:

    int i=5;x=i++;y=i;  此时x=5,i=6,y=6

    int i=5;i++;x=y=i;   此时i=6,x=y=6


    比较上述结果可以知道,若对某变量自增/自减而不赋值,结果都是该变量本身加减1,若某变量自加/自减的同时还要参加其他运算,则前缀运算是先变化后运算,后缀运算是先运算后变化。


    在C++中,指针类型是一种用于存放内存单元地址的变量类型,一个指针可以操作两个对象,一个是指针值(即地址),一个是通过指针间接访问的变量的值,于是指针也可以分为指针常量和常量指针。

    指针常量是相对于指针变量而言的,也就是指针值不能被修改的指针。

    定义一个常量指针后,指针指向的对象的值不能被改变,即不能通过指针来更改所指向的对象的值,但指针本身可以改变,指向另外的对象。

    

    当一个程序准备运行时,操作系统会为程序分配一块内存空间,C++程序的内存通常被分为4个区:

    全局数据区:全局变量、静态变量、字符串常量、常变量

    代码区:所有的函数和代码

    栈区:为运行函数而分配的函数参数、局部变量和返回地址

    堆区:动态分配内存,对象


    使同一个运算符作用于不同类型的数据时导致不同行为的这种机制叫做运算符重载。C++中预定义的运算符的操作对象只能是基本数据类型,但实际上,对于许多用户自己定义类型(例如类),也需要类似的运算,这时就必须在C++中重新定义这些运算符了,赋予已有运算符新的功能,使它能够用于特定类型执行特定的操作。


    敬请期待下篇博客。

你可能感兴趣的:(C++)