私はC++を初めて使用し、Javaから移行して、これについて疑問に思っています:
pos = result.find(remove[i]);
if (pos == string::npos)
文字列を「スーパークラス」と呼んでいますか?定数「npos」にアクセスするクラス自体を呼び出している場合、私は混乱しています関数で宣言されたいくつかの文字列変数がある場合、クラスのどのインスタンスであるかをどのように知るのですか?
nposインスタンスにバインドされるのではなく、クラス自体にバインドされます。static会員です。Javaにもstaticメンバーがあります。
[...]
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。
npos文字列の静的メンバーです。
C++ の静的メンバーは、プログラムごとに 1 回作成され、同じクラスのすべてのインスタンスで共有されます。クラスをインスタンス化せずにアクセスすることもできます。