- 1、本文档共2页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Memset初始化类对象需要注意
void *memset(void *s, int v, size_t n);?
英文释义如下:
Copies the value v (converted to type unsigned char) to the first n bytes pointed to by s; returns s.?这里s可以是数组名,也可以是指向某一内在空间的指针;v为要填充的值;n为要填充的字节数,通常为sizeof(s);
使用memset时要注意的是,memset是逐字节进行填充,所以s一般为char *型。对于其它类型的s,可以填充的值有两个,0和-1。这是因为计算机中用二进制补码表示数字,0和二进制补码为全0,-1的二进制补码为全1。如果要 初始化为其它的值,可以用一个for循环,如:
for(int i=0;in;i++)s[i]=v; memset 某个结构(或其它的数据类型)在C语言中是很常见的代码,其目的是对结构(或其它的数据类型)进行初始化,通常都是将变量置为NULL或者0。在C++ 中,针对类对象除了用构造函数初始化对象外,也可以使用memset来进行初始化操作(确实有这种情况,不得已而为之,请大家不要把鸡蛋砸过来!)。但是 一定要注意以下所说的这种情况:如果类包含虚拟函数,则不能用 memset 来初始化类对象。下面是一个例子:class GraphicsObject{protected:char *m_pcName;int????m_iId;//etcpublic:virtual void Draw() {}virtual int Area() {}char* Name() { return m_pcName;}};class Circle: public GraphicsObject{void Draw() { /*draw something*/ }int Area() { /*calculate Area*/ }};void main(){GraphicsObject *obj = new Circle; // 创建对象memset((void *)obj,NULL,sizeof(Circle)); // memset to 0obj-Name(); // 非虚函数调用没问题obj-Draw(); // 在这里死得很难看}结 果我就不说了。因为每个包含虚函数的类对象都有一个指针指向虚函数表(vtbl)。这个指针被用于解决运行时以及动态类型强制转换时虚函数的调用问题。该 指针是被隐藏的,对程序员来说,这个指针也是不可存取的。当进行memset操作时,这个指针的值也要被overwrite,这样一来,只要一调用虚函 数,程序便崩溃。这在很多由C转向C++的程序员来说,很容易犯这个错误,而且这个错误很难查。为了避免这种情况,记住对于有虚拟函数的类对象,决不能使用 memset 来进行初始化操作。而是要用缺省的构造函数或其它的 init 例程来初始化成员
您可能关注的文档
- LETTER之OHMyanthropologist(海Tea生贺)[范海].doc
- LGGD580手机的设置.doc
- LG杯时越执白大胜元晟溱零封对手夺得个人首冠.doc
- Lietome中的判断别人说谎的技巧.docx
- LINGO具有9种逻辑运算符.doc
- LinkinPark林肯公园主唱发声方法.doc
- linuxconvert图像处理命令.docx
- LinuxLinux新手入门教程教你硬盘挂载方法.docx
- linuxnetstat统计连接数查看外部如何查80端口tcp链接数.doc
- linuxrm误删除数据库文件的恢复方法.doc
- 2024至2030年中国羚羊角类饮片行业深度调查与前景预测分析报告.docx
- 重庆市面向中国农业大学定向选调2024届大学毕业生2024年国家公务员考试考试大纲历年真题14笔试历.docx
- 重庆市面向西北工业大学定向选调2024届大学毕业生00笔试历年典型考题及解题思路附答案详解.docx
- 中国不动杆菌感染治疗药行业市场现状分析及竞争格局与投资发展研究报告2024-2029版.docx
- 2024至2030年全球与中国ETL软件市场现状及未来发展趋势.docx
- 初中八年级(初二)生物下册期末考试1含答案解析.docx
- 干簧式继电器项目申请报告.docx
- 2024至2030年中国左氧氟沙星片行业深度调查与前景预测分析报告.docx
- 菜籽项目申请报告.docx
- 2024至2030年中国八角钢行业深度调查与前景预测分析报告.docx
最近下载
- 2023首席质量官真题2.pdf VIP
- 山西美盛物资贸易有限公司邓家庄煤矿机械化升级改造可行性研究报告.doc
- 思科网络实验室路由和交换实验指南.pdf
- 保洁服务投标文件示范文本.docx
- 《物联网技术导论与应用》黄玉兰习题答案.docx
- 《混凝土结构与砌体结构》 习题答案 习题答案 课后习题.doc VIP
- 中职学校《极限配合与技术测量基础》电子教案(含教学进度计划)(配套教材:劳社版中职统编)云天课件.doc
- 人教二上第4课 彩泥世界快乐多教案(表格式).doc
- 2024年国家电投集团陕西新能源有限公司渭南分公司人员招聘笔试备考题库及答案解析.docx
- 基于“互联网+”,开展立德树人——浅谈初中历史教学与思政教育的融合.docx
文档评论(0)