ホームページ >バックエンド開発 >C++ >C のクラス インスタンスを介して静的メンバー メソッドを呼び出すことはできますか?

C のクラス インスタンスを介して静的メンバー メソッドを呼び出すことはできますか?

DDD
DDDオリジナル
2024-11-08 02:59:02229ブラウズ

Can you invoke static member methods via class instances in C  ?

クラス インスタンスを介した C 静的メンバー メソッドの呼び出し

特定の C コードベースでは、クラス インスタンスを介して静的メンバー メソッドを呼び出すという独特のコーディング手法が出現しています。 。この型破りなアプローチは、その有効性と理論的根拠に関していくつかの疑問を引き起こします。

標準に準拠していますか?

常識に反して、C 標準では静的メンバー メソッドに次のことを明示的に許可しています。クラス インスタンスと修飾クラス名の両方を使用して呼び出すことができます。 C 03 標準のセクション 9.4 では、クラス メンバーのアクセス構文を使用する必要はないものの、引き続き使用できることを明確にしています。

実装の理論的根拠

この標準では、その理由について限定的な洞察が提供されています。この独自の呼び出しメカニズムが許可されています。ただし、考えられる理由の 1 つは、静的メソッド呼び出しと非静的メソッド呼び出しの間の切り替えを可能にするテンプレートに対応するためです。

例の図

許容されることを示す次のコード スニペットを考えてみましょう。クラス インスタンス経由で静的メソッドを呼び出す方法:

class Test {
public:
    static void DoCrash() { std::cout << "TEST IT!" << std::endl; }
};

int main() {
    Test k;
    k.DoCrash(); // Calling a static method through an instance

    return 0;
}

コンパイルすると、プログラムは「TEST IT!」を出力します。コンソールに。この動作は、クラス インスタンスを介した静的メソッドの呼び出しが標準で許可されていることを裏付けています。

以上がC のクラス インスタンスを介して静的メンバー メソッドを呼び出すことはできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。