奇怪面试 这个string类能做吗?

vincent_1011 2010-07-14 07:58:51
class string
{
public:
string(const str=NULL);
string(const string &src);
~string();
string& operate = (const string& stringSrc);
private:
char *m_data;
}
实现上面4个函数,我就奇怪。上面能实现吗?除了函数 1和3,能实现。

另外两个怎么做得到,m_data都是private了,很奇怪。不过我我硬头皮就打点引用做给他,哈。后来也忘记问他怎么回事
...全文
169 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
yaozhiyong110 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 vincent_1011 的回复:]
哈,手打的,那些细节不管
前面所有的指针之类的题目都做完,没问题。

就是这个,之前一起想当然以为private成员就不能打点.引用。没转过弯来。

那还好,我实现的和楼上的一样,嘿嘿,就是最后忘记delete了,后来想和他说的,不过他当时没看着卷子说话,我也没说了。
[/Quote]

你认为strcpy(m_data, src.m_data) 对的???

private这样用???

strcpy(m_data, src.c_str()); 基础的string都没熟吗?

vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
恩,我已经晓得了, 不用顶我了, 让这帖子赶紧沉吧- -
blackboycpp 2010-07-14
  • 打赏
  • 举报
回复
cheng_fengming 2010-07-14
  • 打赏
  • 举报
回复
你可以自己写或者上网搜一下,CString类的具体实现过程,这个写熟了对你也有好处,大概有下面一系列方法:
class CString
{
public://standard constructor;
CString();
CString(char *p);
CString(CString &c);
~CString();
public://public functions;
CString operator=(char *p);
CString operator+(char *p);
CString operator+(CString &m);
CString operator=(CString &m);
bool operator==(CString &m);
bool operator>=(CString &m);
void Display();
int GetLength();
char* GetBuffer(int minlen);
CString Left(int len);
CString Right(int len);
bool Compare(CString &strDes);
bool Compare(char *sDes);
int Find(char *strSub,int nstart=0); //查找子串
CString Replace(char *subOld,char *subNew,int start=0);
CString Delete(int nIndwx,int nCount =1);
CString Insert(int nIndex,char *pstr);
CString Remove(char *pstr,int start=0);
CString Mid(int nFirst,int nEnd);
CString Trim(char *strDest,int nstart);//剪掉从nstart开始的字符串
private://private members;
char* m_pStr;
}
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 fanster28_ 的回复:]

佩服ls签名档的自信
[/Quote]
- -.估计要改名了,已经工作几个月,最近换工作。

杯具,希望HR没见到这个,哈。
fanster28_ 2010-07-14
  • 打赏
  • 举报
回复
佩服ls签名档的自信
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wyz007134 的回复:]

C/C++ code
#include <iostream>
#include <cstring>
using namespace std;
class String
{
public:
String(const char* str = NULL); // 你这里少了char*,我说看着很奇怪
String(const String &src);
~Strin……
[/Quote]

引用的原理也是用到指针,只不过complier隐藏了起来
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
哈,手打的,那些细节不管
前面所有的指针之类的题目都做完,没问题。

就是这个,之前一起想当然以为private成员就不能打点.引用。没转过弯来。

那还好,我实现的和楼上的一样,嘿嘿,就是最后忘记delete了,后来想和他说的,不过他当时没看着卷子说话,我也没说了。
wyz007134 2010-07-14
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstring>
using namespace std;
class String
{
public:
String(const char* str = NULL); // 你这里少了char*,我说看着很奇怪
String(const String &src);
~String();
String& operator=(const String& stringSrc); // operator 拼错了..
void Show()
{ cout << m_data << endl; }
private:
char *m_data;
}; // 你这里少分号,低级错误

int main() // for testing
{
String obj1("For testing");
String obj2(obj1);
obj1.Show();
obj2.Show();
String obj3("New testing");
String obj4 = obj2 = obj3;
obj4.Show();
obj2.Show();
return 0;
}


String::String(const char* str) // 构造函数
{
if (NULL == str)
{
m_data = NULL;
return;
}
m_data = new char[strlen(str) + 1];
strcpy(m_data, str);
}

String::String(const String &src) // 拷贝构造
{
m_data = new char[strlen(src.m_data) + 1];
strcpy(m_data, src.m_data);
}

String::~String() // 析构
{
delete[] m_data;
m_data = NULL;
}

String& String::operator=(const String& stringSrc) // 重载赋值
{
delete[] m_data;
m_data = new char[strlen(stringSrc.m_data) + 1];
strcpy(m_data, stringSrc.m_data);
return (String&)(*this);
}

// lz比我强多了,我毕业面试的时候HR问我指针和引用的区别,我说我没学过引用...
// 现在努力还来得及
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hairetz 的回复:]

引用 4 楼 vincent_1011 的回复:
引用 1 楼 coding_hello 的回复:

说明你确实需要好好学习,才能找工作。

第二个是拷贝构造函数
第四个是操作符重载

静下心来看看书吧。C++ Primer就挺好的。

?????????????

这样吗?实现的时候你怎么取参数的m_data.
难道是src.m_data????????


没……
[/Quote]

能简单实现下给我看看吗?
可是现在src是一个对象变量了,难道还可以直接打点引用private成员?
PG 2010-07-14
  • 打赏
  • 举报
回复
说一说,你为啥认为1和3就可以而2和4就不可以?
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vincent_1011 的回复:]
引用 1 楼 coding_hello 的回复:

说明你确实需要好好学习,才能找工作。

第二个是拷贝构造函数
第四个是操作符重载

静下心来看看书吧。C++ Primer就挺好的。

?????????????

这样吗?实现的时候你怎么取参数的m_data.
难道是src.m_data????????
[/Quote]

没错,在类的本体实现里可以访问任何这个类型的类的private变量。
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]

说明你确实需要好好学习,才能找工作。

第二个是拷贝构造函数
第四个是操作符重载

静下心来看看书吧。C++ Primer就挺好的。
[/Quote]

你实现一个给我看看??
vincent_1011 2010-07-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 coding_hello 的回复:]

说明你确实需要好好学习,才能找工作。

第二个是拷贝构造函数
第四个是操作符重载

静下心来看看书吧。C++ Primer就挺好的。
[/Quote]
?????????????

这样吗?实现的时候你怎么取参数的m_data.
难道是src.m_data????????
liyuxia713 2010-07-14
  • 打赏
  • 举报
回复
类本身的成员函数当然可以调用类的所有成员了,private只是限制类之外的。
要不然你觉得private成员定义了能干什么
  • 打赏
  • 举报
回复
认真看看电子书就明白了.
野男孩 2010-07-14
  • 打赏
  • 举报
回复
说明你确实需要好好学习,才能找工作。

第二个是拷贝构造函数
第四个是操作符重载

静下心来看看书吧。C++ Primer就挺好的。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧