面向对象程序设计研讨_第1页
面向对象程序设计研讨_第2页
面向对象程序设计研讨_第3页
面向对象程序设计研讨_第4页
面向对象程序设计研讨_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Q1:带参数的宏、内联函数、函数模板15121395张晓萱15121758辛翌菲15121470李喆雯15121856刘知昊什么是宏定义? 宏定义是C提供的三种预处理命令的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。在编译之前进行的处理最基本的宏定义的格式: #define 标识符(宏名) 字符串在预处理时,将所有的宏名替换为对应的字符串#define PI 3.1415926把程序中出现的PI全部换成3.1415926宏定义是替换,不做计算,也不做表达式求解。带参数的宏定义#define 标识符(宏名) 字符串#define S(a,b) a*b除了一般的字符串替换,还要做参数代

2、换#include#define S(r) r*rint main()int area,a=1,b=3;area=S(a+b);printf(%d,area);return 0;#define S(r) r*rarea=S(a+b);第一步换为area=r*r;第二步被换为area=a+b*a+b;C+中的内联函数内联函数是指用inline关键字修饰的函数。在类内定义的函数被默认成内联函数。#include using namespace std;inline int sum(int a,int b)return a+b;int main()int c(3),d(4);coutsum(c,d)

3、endl;return 0;机制:内联函数在调用时,是将调用表达式用内联函数体来替换。目的:消除函数调用时的时间开销。所以,它通常用于频繁执行的函数。内联函数的缺点(使用时应注意)1.递归函数不能定义为内联函数。2.内联函数一般适合于不存在while和switch等复杂的结构且只有15条语句的小函数上,否则编译系统将该函数视为普通函数。3.内联函数只能先定义后使用,否则编译系统也会把它认为是普通函数。由于内联函数在编译阶段在调用的地方扩展,递归调用无法扩展,因为根本无法事先知道要扩展多少次。inline仅做为一种“请求”,特定的情况下,编译器将不理会inline关键字,而强制让函数成为普通函数

4、。出现这种情况,编译器会给出警告消息。C+函数模板函数模板可以用来创建一个通用的函数,以支持多种不同的形参。声明形式:template返回类型 函数名 (形参表) 函数体凡希望根据实参数据类型来确定数据类型的变量,都可以用数据类型参数标识符来说明,从而使这个变量可以适应不同的数据类型。编译系统遇到调用语句时,根据实际的参数的数据类型自动生成一个实际的函数模板函数。编译系统不编译函数模板,只编译模板函数。class函数模板能大大加快编码速度,但不会提高程序运行的速度。THANK YOUQ2:普通数组&动态数组什么是动态数组?int a10;int n=10;int an;在编译阶段,编译

5、器并不知道 n的值是多少int n=10;int *p=new intn;用new在堆空间上动态创建一个数组new 类型n 分配这种类型的n个大小的内存空间,并用默认构造函数来初始化这些变量。二维的情况如要定义一个动态的amnint *pm; for(int i=0;im;i+) pi=new intn; int *p= new int*m;推广到多维,也是这样自底向上地设计。容量极限的测试1(栈空间中的普通数组)int n=0;const int N = 1024;void func()char msgN;cout n+ t;func();char一般占1个字节(1Byte=8bit),这里一个msg1024即占了1024Byte=1KB测试结果:约1971KB容量极限的测试2(堆空间中的动态数组)int n=0;const int N = 1024;void func_heap()char *p = new charN;/ 只申请,不释放cout n+ t;func_

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论