0

我的构造函数:

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

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

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

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

这会最好避免开销吗?

4

2 回答 2

1

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

如果您担心使用this指针的“开销”,请不要:它已经尽可能高效了。从字面上看,没有办法让它更快。

如果您的问题稍有错误,并且您只想在成员函数中提及成员变量,那么:

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

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

该函数等价于:

void MyClass::myFunction()
{
   x = 4;
}
于 2014-03-08T00:28:09.120 回答
1

您可以只传入一个不同的命名参数。这是假设这是您班级encoded的私有字符串成员bnf

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;
}
于 2014-03-08T00:22:53.150 回答