C++方向分析和总结.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1、简单题 为什么拷贝构造函数 Account( const Accout other)不能写成 Account( const Accout other) 。 答案:如果不传入引用,函数传参过程中系统会调用一次复制操作,也就是会调用一次拷贝构造函数,而该拷贝构造函数又是参数传递,就会继续调用拷贝复制(拷贝构造),这样就会进入一个死循环。 C++ 拷贝构造函数深拷贝与浅拷贝区别。 答:浅拷贝和深拷贝主要区别就是复制指针时是否重新创建内存空间。 如果没有创建内存只赋值地址为浅拷贝; 创建新内存把值全部拷贝一份就是深拷贝; 浅拷贝在类里面有指针成员的情况下只会复制指针的地址,会导致两个成员指针指向同一块内存,这样在要是分别 delete 释放时就会出现问题,因此需要用深拷贝。 什么是“引用”?声明和使用“引用”要注意哪些问题? 答:引用就是某个目标变量的“别名”(alias),对应用的操作 与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因 此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。 C++中的空类,默认产生哪些类成员函数? 答案:构造函数、拷贝构造函数、析构函数、赋值运算符、取址运算符、const 取址运算符。 利用如下程序段解析: class Empty { public: Empty(); //缺省构造函数 Empty(const Empty ); //拷贝构造函数 ~Empty(); //析构函数 Empty operator=(const Empty ); Empty* operator(); //取址运算符 //赋值运算符 const Empty* operator() const; }; //取址运算符 多态的作用? 主要是两个: 隐藏实现细节,使得代码能够模块化;扩展代码模块, 实现代码重用; 接口重用:为了类在继承和派生的时候,保证使用家族中任一类的实例的某一属性时的正确调用。 类成员函数的重载、覆盖和隐藏区别? 答案: 成员函数被重载的特征: 1)相同的范围(在同一个类中); 函数名字相同; 参数不同; irtual 关键字可有可无。 覆盖是指派生类函数覆盖基类函数,特征是: 1)不同的范围(分别位于派生类与基类); 函数名字相同; 参数相同; 基类函数必须有virtual 关键字。 “隐藏”是指派生类的函数屏蔽了与其同名的基类函数,规则如下: 如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual 关键字。此时,基类的函数被隐藏 (注意别与覆盖混淆)。 在 C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern C? 答:C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字与 C 语言的不同。假设某个函数的原型为: void foo(int x, int y);该函数被 C 编译器编译后在库中的名字为_foo,而 C++编译器则会产生像_foo_int_int 之类的名字。C++提供了 C 连接交换指定符号 externC来解决名字匹配问题。 面向对象程序设计的优点? 答:开发时间短, 效率高, 可靠性高。面向对象编程的编码具有高可重用性,可以在应用程序中大量采用成熟的类库(如STL),从而虽短了开发时间,软件易于维护和升级。 什么是单例模式? 保证一个类仅有一个实例,并提供一个访问它的全局访问点, 该实例被所有程序模块共享。 构造和析构的次序答:1. 构造顺序: 构造虚基类-构造基类(从左到右)-初始化列表-构造函数 体。 2. 析构顺序: (与构造顺序完全相反) 析构函数体-清除成员变量-析构基类部分(从右到左)-析 构虚基类部分。 C++中new-delete 与malloc-free 的区别! 答:new 建立的是一个对象;malloc 分配的是一块内存. 详细如下: malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++ 的运算符。它们都可用于申请动态内存和释放内存 对于非内部数据类型的对象而言,光用 maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由 malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够

文档评论(0)

hao187 + 关注
官方认证
文档贡献者

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

认证主体武汉豪锦宏商务信息咨询服务有限公司
IP属地上海
统一社会信用代码/组织机构代码
91420100MA4F3KHG8Q

1亿VIP精品文档

相关文档