private (C++)private (C++)


private base-class


前に、クラス メンバーの一覧と、プライベートキーワードは、それらのメンバーが、クラスのメンバー関数とフレンドからのみアクセスできることを指定します。When preceding a list of class members, the private keyword specifies that those members are accessible only from member functions and friends of the class. これは、次のアクセス指定子またはクラスの末尾までで宣言されているすべてのメンバーに適用されます。This applies to all members declared up to the next access specifier or the end of the class.

基底クラスの名前、プライベートキーワードは、基底クラスのパブリックおよびプロテクト メンバーが派生クラスのプライベート メンバーを指定します。When preceding the name of a base class, the private keyword specifies that the public and protected members of the base class are private members of the derived class.

クラスのメンバーの既定のアクセスはプライベートです。Default access of members in a class is private. 構造体または共用体のメンバーの既定のアクセスはパブリックです。Default access of members in a structure or union is public.

基底クラスの既定のアクセスは、クラスの場合はプライベートで、構造体の場合はパブリックです。Default access of a base class is private for classes and public for structures. 共用体に基底クラスを設定することはできません。Unions cannot have base classes.

関連情報については、次を参照してくださいフレンドパブリック保護、とでメンバー アクセス テーブルクラスのメンバーへのアクセスの制御.For related information, see friend, public, protected, and the member-access table in Controlling Access to Class Members.

/clr 固有/clr Specific

CLR 型では、C++ アクセス指定子のキーワード (パブリックプライベート、および保護) 型およびアセンブリに関連メソッドの可視性に影響を与えることができます。In CLR types, the C++ access specifier keywords (public, private, and protected) can affect the visibility of types and methods with regard to assemblies. 詳細については、次を参照してください。メンバー アクセス コントロールします。For more information, see Member Access Control.


ファイルがコンパイルされた/LNこの動作の影響は受けません。Files compiled with /LN are not affected by this behavior. この場合、すべてのマネージド クラス (パブリックかプライベート) が表示されます。In this case, all managed classes (either public or private) will be visible.

END /clr 固有END /clr Specific


// keyword_private.cpp
class BaseClass {
   // privMem accessible from member function
   int pubFunc() { return privMem; }
   void privMem;

class DerivedClass : public BaseClass {
   void usePrivate( int i )
      { privMem = i; }   // C2248: privMem not accessible
                         // from derived class

class DerivedClass2 : private BaseClass {
   // pubFunc() accessible from derived class
   int usePublic() { return pubFunc(); }

int main() {
   BaseClass aBase;
   DerivedClass aDerived;
   DerivedClass2 aDerived2;
   aBase.privMem = 1;     // C2248: privMem not accessible
   aDerived.privMem = 1;  // C2248: privMem not accessible
                          //    in derived class
   aDerived2.pubFunc();   // C2247: pubFunc() is private in
                          //    derived class

関連項目See also

クラス メンバーへのアクセス制御Controlling Access to Class Members