Android之NDK开发(三)C++初识

xiaoxiao2021-02-28  100

一、C++介绍

C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言[1] 。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程序设计风格。最新正式标准C++11于2011年8月12日公布。

C++与C的关系 C语言是C++的基础,C++和C语言在很多方面是兼容的。C语言是一个结构化语言,它的重点在于算法与数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事物)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事物)控制。所以C语言和C++的最大区别在于它们解决问题的思想方法不一样。

C++对C的“增强”,表现在六个方面:

(1) 类型检查更为严格 (2) 增加了面向对象的机制 (3) 增加了泛型编程的机制(Template) (4) 增加了异常处理 (5) 增加了运算符重载 (6) 增加了标准模板库(STL)

二、输入输出

std::cout << i << std::endl; std::cin >> i 预处理打印宏 #define P(X) cout << #X << “: ” << X << endl; #作用获得任何一个表达式并转成一个字符数组

三、文件的输出

为了打开文件进行读写操作,必须包含<fstream> 为了读而打开文件,要创建一个ifstream对象,用法与cin相同 为了写而打开文件,要创建一个ofstream对象,用法与cout相同 iostream库中,一个非常有用的函数getline(),把一行读入到string对象中 (以换行符结束),getline(ifstream in, string str );

四、构造函数和析构函数

在C++里面可以用结构体作为类来使用 构造函数和析构函数是在类体中说明的两种特殊的成员函数 构造函数是在创建对象时,使用给定的值来将对象初始化 析构函数的功能正好相反,是在系统释放对象前,对对象做一些善后工作

构造函数: 若没有定义类的构造函数,则编译器自动产生一个缺省的构造函数; 若定义了没有参数的构造函数,或各参数均有缺省值的构造函数也称为缺省的构造函数,缺省的构造函数只能有一个; A(float a=10,float b=20){ x=a; y=b;} A(){ } 均为缺省的构造函数

构造函数与new运算符 ,用new动态开辟空间 最后返回这个动态对象的起始地址; 用new运算符产生的动态对象,在不再使用这种对象时,必须用delete运算符来释放对象所占用的存储空间; 用new建立类的对象时,可以使用参数初始化动态空间

析构函数 : 析构函数的作用与构造函数正好相反,是在对象的生命期结束时,释放系统为 对象所分配的空间,即要撤消一个对象 ~Person() {} 析构函数的特点: 1>.析构函数是一个特殊的成员函数,函数名必须与类名相同,并在其前面加上 字符“~”,以便和构造函数名相区别; 2>.析构函数不能带有任何参数,不能有返回值,不指定函数类型; 3>.一个类中,只能定义一个析构函数,析构函数不允许重载; 4>.析构函数是在撤消对象时由系统自动调用的; 在程序的执行过程中,当遇到某一对象的生存期结束时,系统自动调用析构函数,然后再收回为对象分配的存储空间 在程序的执行过程中,对象如果用new运算符开辟了空间,则在类中应该定义一个析构函数,并在析构函数中使用delete删除由new分配的内存空间。因为在撤消对象时,系统自动收回为对象所分配的存储空间,而不能自动收回由new分配的动态存储空间。

五、访问和控制类

访问控制通常是指实现细节的隐藏,将函数包含到一个结构体内(常成为封装)来产生一种带数据和操作的数据类型,由访问控制在该数据类型之内确定边界 C ++ 的类class 和struct 每个方面都是一样的,除了class 中的成员默认为private, 而struct 中的成员默认为public

六、内联函数

nline 说明这个函数是内联的,在编译过程中内联函数会直接被源代码替换,提高执行效率 如果类中的某个函数会被调用很多次或者放在循环中,那么建议将这个函数声明为内联,可以提高程序的运行效率

记住,调用函数的开销是很大的,所谓的空间开销是指调用函数前,先要将原来的函数保存在寄存器(占用寄存器空间)里面,并在调用结束后恢复。调用函数时,还要复制实参(占用内存空间)。如果被调用函数一旦调用频繁,就会花费很多空间。如果你有一段“短小而频繁调用的函数”,内联是个不错的选择。

七、虚函数

虚函数是C++的精华,也是java多态的前身。virtual虚函数为了重载和多态的需要,在基类中是由定义的,即便定义是空,所以子类中可以重写也可以不写基类中的函数!纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像java中的接口函数!虚函数引入原因:为了方便使用多态特性,我们常常需要在基类中定义虚函数。

转载请注明原文地址: https://www.6miu.com/read-31229.html

最新回复(0)