面试宝典-面试题1

Posted acm-jing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试宝典-面试题1相关的知识,希望对你有一定的参考价值。

一、题意:对赋值操作符进行重定义,使其可以进行类对象的赋值

二、代码:

技术图片
  1 #include<cstring>
  2 #include<cstdio>
  3 #include<iostream>
  4 using namespace std;
  5 
  6 class CMyString
  7 {
  8 public:
  9     CMyString(char* pData = nullptr);
 10     CMyString(const CMyString& str);
 11     ~CMyString(void);
 12 
 13     CMyString& operator = (const CMyString& str);
 14 
 15     void Print();
 16 
 17 private:
 18     char* m_pData;
 19 };
 20 
 21 CMyString::CMyString(char *pData)
 22 {
 23     if(pData == nullptr)
 24     {
 25         m_pData = new char[1];
 26         m_pData[0] = ;
 27     }
 28     else
 29     {
 30         int length = strlen(pData);
 31         m_pData = new char[length + 1];
 32         strcpy(m_pData, pData);
 33     }
 34 }
 35 
 36 CMyString::CMyString(const CMyString &str)
 37 {
 38     int length = strlen(str.m_pData);
 39     m_pData = new char[length + 1];
 40     strcpy(m_pData, str.m_pData);
 41 }
 42 
 43 CMyString::~CMyString()
 44 {
 45     delete[] m_pData;
 46 }
 47 
 48 CMyString& CMyString::operator = (const CMyString& str)
 49 {
 50     if(this == &str)
 51         return *this;
 52 
 53     delete []m_pData;
 54     m_pData = nullptr;
 55 
 56     m_pData = new char[strlen(str.m_pData) + 1];
 57     strcpy(m_pData, str.m_pData);
 58 
 59     return *this;
 60 }
 61 
 62 // ====================测试代码====================
 63 void CMyString::Print()
 64 {
 65     printf("%s", m_pData);
 66 }
 67 
 68 void Test1()
 69 {
 70     printf("Test1 begins:
");
 71 
 72     char* text = "Hello world";
 73 
 74     CMyString str1(text);
 75     CMyString str2;
 76     str2 = str1;
 77 
 78     printf("The expected result is: %s.
", text);
 79 
 80     printf("The actual result is: ");
 81     str2.Print();
 82     printf(".
");
 83 }
 84 
 85 // 赋值给自己
 86 void Test2()
 87 {
 88     printf("Test2 begins:
");
 89 
 90     char* text = "Hello world";
 91 
 92     CMyString str1(text);
 93     str1 = str1;
 94 
 95     printf("The expected result is: %s.
", text);
 96 
 97     printf("The actual result is: ");
 98     str1.Print();
 99     printf(".
");
100 }
101 
102 // 连续赋值
103 void Test3()
104 {
105     printf("Test3 begins:
");
106 
107     char* text = "Hello world";
108 
109     CMyString str1(text);
110     CMyString str2, str3;
111     str3 = str2 = str1;
112 
113     printf("The expected result is: %s.
", text);
114 
115     printf("The actual result is: ");
116     str2.Print();
117     printf(".
");
118 
119     printf("The expected result is: %s.
", text);
120 
121     printf("The actual result is: ");
122     str3.Print();
123     printf(".
");
124 }
125 
126 int main(int argc, char* argv[])
127 {
128     Test1();
129     Test2();
130     Test3();
131 
132     return 0;
133 }
View Code

 

以上是关于面试宝典-面试题1的主要内容,如果未能解决你的问题,请参考以下文章

Java面试宝典每日3题:day24

蚂蚁金服首发887页Java面试宝典!还原真实面试情景+面试题

大数据面试宝典 第二篇 HDFS 面试题

《PHP程序员面试笔试宝典》——如何回答系统设计题?

2021年最新面试宝典校招面试题

2021年最新面试宝典校招面试题