• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 从string类的实现看C++类的四大函数(面试常见)

从string类的实现看C++类的四大函数(面试常见)

作者:2778085001 字体:[增加 减小] 来源:互联网 时间:2017-05-28

2778085001 通过本文主要向大家介绍了c++ string类,c++string类源代码,c++中string类,c++ string,c++中string的用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

朋友面试的一道面试题,分享给大家,面试官经常会问到的,实现string类的四大基本函数必掌握。

一个C++类一般至少有四大函数,即构造函数、拷贝构造函数、析构函数和赋值函数,一般系统都会默认。但是往往系统默认的并不是我们所期望的,为此我们就有必要自己创造他们。在创造之前必须了解他们的作用和意义,做到有的放矢才能写出有效的函数。

 #include <iostream>
 class CString
 {
   friend std::ostream & operator<<(std::ostream &, CString &);
   public:
     // 无参数的构造函数
     CString();
     // 带参数的构造函数
     CString(char *pStr);
     // 拷贝构造函数
     CString(const CString &sStr);
     // 析构函数
     ~CString();
     // 赋值运算符重载
     CString & operator=(const CString & sStr);
   private:
     char *m_pContent;
 };
 inline CString::CString()
 {
   printf("NULL\n");
   m_pContent = NULL;
  m_pContent = new char[1];
  m_pContent[0] = '\0';
 }
 inline CString::CString(char *pStr)
 {
   printf("use value Contru\n");
   m_pContent = new char[strlen(pStr) + 1];
   strcpy(m_pContent, pStr);
 }
 inline CString::CString(const CString &sStr)
 {
   printf("use copy Contru\n");
   if(sStr.m_pContent == NULL)
     m_pContent == NULL;
   else
   {
     m_pContent = new char[strlen(sStr.m_pContent) + 1];
     strcpy(m_pContent, sStr.m_pContent);
   }
 }
 inline CString::~CString()
 {
   printf("use ~ \n");
   if(m_pContent != NULL)
     delete [] m_pContent;
 }
 inline CString & CString::operator = (const CString &sStr)
 {
   printf("use operator = \n");
   if(this == &sStr)
     return *this;
   // 顺序很重要,为了防止内存申请失败后,m_pContent为NULL
  char *pTempStr = new char[strlen(sStr.m_pContent) + 1];
   delete [] m_pContent;
   m_pContent = NULL;
   m_pContent = pTempStr;
   strcpy(m_pContent, sStr.m_pContent);
   return *this;
 }
 std::ostream & operator<<(std::ostream &os, CString & str)
 {
   os<<str.m_pContent;
   return os;
 }
 int main()
 {
  CString str3; // 调用无参数的构造函数
   CString str = "My CString!"; // 声明字符串,相当于调用构造函数
  std::cout<<str<<std::endl;
   CString str2 = str; // 声明字符串,相当于调用构造函数
   std::cout<<str2<<std::endl;
   str2 = str;  // 调用重载的赋值运算符
  std::cout<<str2<<std::endl;
   return 0;
 } 
</div>

输出:

NULL
use value Contru
My CString!
use copy Contru
My CString!
use operator =
My CString!
use ~
use ~
use ~

以上所述是小编给大家介绍的从string类的实现看C++类的四大函数(面试常见)的全部叙述,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • C++ 类访问控制的条件总结
  • C++实现String类实例代码
  • C++实现日期类(Date类)的方法
  • C++ string 字符串查找匹配实例代码
  • C++中string的模拟实现
  • 关于C++ string和c类型字符数组的对比
  • C++简单集合类的实现方法
  • 从string类的实现看C++类的四大函数(面试常见)
  • 探究C++中string类的实现原理以及扩展使用
  • 深入解析C++编程中类的封装特性

相关文章

  • 2017-05-28从汇编看c++中的多态详解
  • 2017-05-28CFileDialog设置多选的问题解决
  • 2017-05-28C++中const应放在类型前还是后
  • 2017-05-28C语言小程序 如何判断三角型类型
  • 2017-05-28基于C++内存分配、函数调用与返回值的深入分析
  • 2017-05-28浅谈c语言中类型隐性转换的坑
  • 2017-05-28C语言中快速排序和插入排序优化的实现
  • 2017-05-28VC WinExec打开指定程序或者文件的方法
  • 2017-09-20more effective C++在未来时态下发展程序
  • 2017-05-28c语言实现一个简单日历

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • c语言版本二叉树基本操作示例(先序 递归 非递归)
    • 三种获取网页源码的方法(使用MFC/Socket实现)
    • C++实现对输入数字组进行排序
    • 对比分析C语言中的gcvt()和ecvt()以及fcvt()函数
    • 如何使用VC库函数中的快速排序函数
    • C++中基类和派生类之间的转换实例教程
    • C与C++中结构体的区别
    • C字符串操作函数实现方法小结
    • 深入解析C++编程中的静态成员函数
    • 基于结构体与指针的详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有