一般试题.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一般试题

1.static有什么用途?(请至少说明两种) 1)函数体内,声明为static的变量,在函数调用中其值不变。 2) 在同一个文件内(但在函数体外),声明为静态的变量,可被本文件内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。 3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用 2.引用( )与指针(*)有什么区别? 1) 引用必须被初始化,指针不必。 2) 引用初始化以后不能被改变,指针可以改变所指的对象。 3) 不存在指向空值的引用,但是存在指向空值的指针。 智能指针实际上是一个栈对象,并非指针类型,在栈对象生命期即将结束时,智能指针通过析构函数释放有它管理的堆内存。所有智能指针都重载了“operator-”操作符,直接返回对象的引用,用以操作对象。访问智能指针原来的方法则使用“.”操作符。运算符重载的三种方式和不允许重载的5个运算符 答:运算符重载意义是为了对用户自定义数据的操作和内定义的数据类型的操作形式一致 (1)普通函数,友元函数,类成员函数(2).*(成员指针访问运算符)????::(域运算符)sizeof 长度运算符??? ?:条件运算符???.(成员访问运算符)动态连接库的两种方式? 调用一个DLL中的函数有两种方法:1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的 出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。 ?构造函数不能为虚函数,要构造一个对象,必须清楚地知道要构造什么,否则无法构造一个对象。析构函数可以为纯虚函数 虚函数就是多态情况下只执行一个。继承时总是要先构造父类对象,然后子类对象,如果构造函数设为虚函数,那么当你在构造父类的构造函数时,不得不显示的调用构造,还有一个原因就是为了防错,试想如果你在子类中一不小心重写了个跟父类构造函数一样的函数,那么你的父类的构造函数将被覆盖,也即不能完成父类的构造.就会出错.什么函数不能声明为虚函数? 普通函数(非成员函数);静态成员函数;内联成员函数;构造函数;友元函数。 原因:只有类的成员函数才可以声明为虚函数 int a ; const int ra=a; ra=1; //错误 a=1; //正确 例2 string foo( ); void bar(string s); 那么下面的表达式将是非法的: bar(foo( )); bar(hello world); 原因在于foo( )和hello world串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。 引用型参数应该在能被定义为const的情况下,尽量定义为const 。 “引用”与多态的关系? 引用是除指针外另一个可以产生多态效果的手段。这意味着,一个基类的引用可以指向它的派生类实例。 例4:Class A; Class B : Class A{...}; B b; A ref = b; 下面关于“联合”的题目的输出? a) #i nclude stdio.h union { int i; char x[2]; }a; void main() { a.x[0] = 10; a.x[1] = 1; printf(%d,a.i); } 多态的作用? 主要是两个:1. 隐藏实现细节,使得代码能够模块化;扩展代码模块,实现代码重用;2. 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。 New delete 与malloc free 的联系与区别? #include stdlib.h #include stdio.h int atexit(void (*function)(void)); void fn1( void ); int main( void ) { atexit(fn1); printf( This is executed first. ); } void fn1() { printf( This is ); } 描述内存分配方式以及它们的区别? stru

文档评论(0)

wt60063 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档