通过提及对象本身返回对象字段

Return object field by mention the object itself

本文关键字:对象 返回 字段      更新时间:2023-10-16

我想从"string.h"(STL)创建一个类似"string"的类。我的班级是:

class MyChar
{
 char *Buff;
 public:
 /* Some constructors and other helpful methods */
};

我的问题是,我不知道如何做以下事情:

#include <iostream>
int main()
{
 MyChar str;
 str = "My new string";
 cout << str;
}

我不想提到"str.Buff"或"str.getBuffer()"或其他东西…"力量"。和"string"类一样

您需要实现正确的构造函数和赋值操作符。在这种情况下,以const char*为参数的变体。您还需要重载输出操作符。

绝对需要学习三法则和动态内存管理

您需要重载类的赋值操作符=和ostream操作符<<

如果你想这样使用你的类,你需要一个所谓的"赋值操作符"。维基百科上有一篇很好的文章。

基本上你要做的是将右手边(字符数组)分配给左手边(你的类实例)。您需要重载=操作符,或者像注释所说的,重载<<操作符。

编辑:既然OP因为我没有"正确"回答他的模糊问题而拒绝了我,这里是<<过载的一个片段:

std::ostream& operator<<(std::ostream& out, const MyChar& buf) {
    out << buf.Buf;
    return out;
}

你可以这样使用:

std::cout << MyChar << std::endl;

当然,你的类现在有很多问题要解决,也就是说,你没有为字符数组分配数组空间,祝你好运!

您需要添加这样的内容:[未经过测试,但会给您一个想法]

void operator=(const char *str )
{ 
    strcpy(Buff,feet, str);
}
下面的

应该在类定义之外。

ostream& operator<<(ostream& os, const MyChar& mch)
{
    os << mch.Buff;
    return os;
}

将下列语句添加到您的类中。朋友ostream&operator<& lt; (ostream&2、const MyChar&妇幼保健);