1

私はC++を初めて使用し、Javaから移行して、これについて疑問に思っています:

        pos = result.find(remove[i]);  
        if (pos == string::npos)

文字列を「スーパークラス」と呼んでいますか?定数「npos」にアクセスするクラス自体を呼び出している場合、私は混乱しています関数で宣言されたいくつかの文字列変数がある場合、クラスのどのインスタンスであるかをどのように知るのですか?

4

2 に答える 2

5

nposインスタンスにバインドされるのではなく、クラス自体にバインドされます。static会員です。Javaにもstaticメンバーがあります。

21.4 クラステンプレート basic_string [basic.string]

[...]

namespace std {
template<class charT, class traits = char_traits<charT>,
class Allocator = allocator<charT> >
class basic_string {
  public:
    //...
    static const size_type npos = -1;
    //...
};

std::string専門化ですbasic_string

于 2012-11-07T09:26:55.660 に答える
2

npos文字列の静的メンバーです。
C++ の静的メンバーは、プログラムごとに 1 回作成され、同じクラスのすべてのインスタンスで共有されます。クラスをインスタンス化せずにアクセスすることもできます。

于 2012-11-07T09:31:18.547 に答える