计算机疑难杂症.doc

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

虚函数和重载函数的关系: 区别: 重载函数要求函数有相同的返回值类型和函数名称,并有不同的参数序列;而虚函数则要求这三项(函数名、返回值类型、参数序列)完全相同。 重载函数的调用是以所传递参数序列的差别作为调用不同函数的依据的;虚函数是根据对象的不同去调用不同类的虚函数。 虚函数的运行表现出多态性,这是C++的精髓;而重载函数则在编译时表现为多态性。 重载函数可以是成员函数或友员函数,而虚函数只能是成员函数。 静态数据成员:被各对象所共有,不属于单一对象,其值一致。 存活周期:类定义到程序结束。静态数据成员只能在类外进行初始化:int Box::height=110;(不用再前面加static),不能使用参数初始化列表对静态数据成员初始化。静态数据成员的引用:①Box::height;②coutbox1.height; 使用静态数据成员可以取代全局变量,实现封装。 静态成员函数:定义,static int volume(); 调用,Box::volume();或a.volume(); 静态成员函数没有this指针,不能访问非静态成员。 若静态成员函数要访问非静态成员,可如下, Float Student::average(Student stu) {coutstu.scoreend; //average()是静态成员函数 Return(sum/count);} 内存区域分布与应用: 一般认为在c中分为这几个存储区 1栈 - 有编译器自动分配释放 ;2堆 - 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收 ;3全局区(静态区),全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束释放 ;4文字常量区--专门放常量的地方,比如字符串常量。 - 程序结束释放 ;5代码区 存放程序代码;在函数体中定义的变量通常是在栈上,用malloc, calloc, realloc等分配内存的函数分 。配得到的就是在堆上。在所有函数体外定义的是全局量,加了static修饰符后不管在哪里都存放在全局区(静态区),在所有函数体外定义的static变量表示在该文件中有效,不能extern到别的文件用,在函数体内定义的static表示只在该函数体内有效。另外,函数中的adgfdf这样的字符串存放在常量区。针对你的题目,动态数据存放在堆区或栈区 而静态数据存放在全局区(静态区)特点:动态数据 由系统自动分配内存或由程序员自主分配;系统自动分配的存放在栈区 一般包括局部变量 函数参数等等;程序员自主分配的存放在堆区 又malloc new等实现;它的生存期是变量的作用域 不是整个程序。静态数据,存放在静态区 和全局变量一个区 它的生存期是整个程序。 const char * 类型的实参与 LPCTSTR 类型的形参不兼容:  HYPERLINK /s/blog_6ccd0a110100x5y7.htm /s/blog_6ccd0a110100x5y7.htm LPCTSTR是一个windows API数据类型。与其相关还有两个类型:LPCSTR和LPCWSTRLPCSTR:根据windows API数据类型的命名规律,LP表示该变量是一个指针,C表示是常量(const),STR表示的是字符串。因此LPCSTR是一个const char*类型。这是一个windows(ANSI)字符串常量,注意是多字节编码的。LPCWSTR:而W表示的是宽字符,因此LPCWSTR表示的也是字符串常量,不过是Unicode编码的。在WinNT.h中的定义:typedef const char* LPCSTR;typedef const wchar* LPCWSTR;最后再看LPCTSTR:根据环境配置,如果定义了UNICODE宏,则是LPCWSTR类型,否则是LPCSTR类型。MessageBox(NULL, Open image failed!, error, MB_OK);在第二个和第三个参数的地方,程序会报错:const char *类型的实参与LPCWSTR类型的形参不兼容。首先来看MessageBox这个函数,它与LPCTSTR类似,当工程采取不同编码方式的时候,对应的实际函数不同。当采取Unicode编码时,实际调用的是MessageBoxW,该函数接受的参数是LPCWSTR;当采取的是多字节编码时,实际调用的是MessageBoxA,该函数接受的参数是LPCSTR。通常我们手动输入的字符串都是const char*(即LPCSTR)类型的,因此只需将该句中的MessageBox改为MessageBoxA即可。 另一种解决方法是对第二个和第三

文档评论(0)

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

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

1亿VIP精品文档

相关文档