C ++:方法中的字符串成员别名

时间:2014-03-08 00:20:40

标签: c++ string reference class-method class-members

我的构造函数:

bnf::bnf(string encoded)
{
    this->encoded = encoded;
}

将字符串数据复制到成员。 (或者它......?)

我将有一个递归解码方法,但我想避免一直写this->encoded

如何在方法中有效且简单地创建对成员的别名/引用?

最好避免这种开销吗?

2 个答案:

答案 0 :(得分:1)

您可以传入不同的命名参数。这假设encodedbnf

的私有字符串成员
bnf::bnf(string en)
{
    encoded = en;
}

在您的其他功能中,如果您不想,则仍然无需编写this

void bnf::printCode(){
     cout << encoded << endl;
}

假设你的班级是这样的:

class bnf{
    public:
         bnf(string en};
         void printCode();
         //<some other functions>
    private:
         string encoded;
}

答案 1 :(得分:1)

你现在正在做的事情没有错。它富有表现力,清晰和​​正确。不要试图破坏它。

如果您担心使用this指针会产生“开销”,请不要:它已经尽可能高效。实际上没有办法让它更快。

如果您的问题稍有不妥,而您想要做的就是在成员函数中提及成员变量,那么:

struct MyClass
{
   int x;
   void myFunction();
};

void MyClass::myFunction()
{
   this->x = 4;
}

该功能相当于:

void MyClass::myFunction()
{
   x = 4;
}