Nested Classes in C++ (original) (raw)

Last Updated : 04 Jan, 2019

A nested class is a class which is declared in another enclosing class. A nested class is a member and as such has the same access rights as any other member

. The members of an enclosing class have no special access to members of a nested class; the usual access rules shall be obeyed. For example, program 1 compiles without any error and program 2 fails in compilation.Program 1

CPP `

#include

using namespace std;

/* start of Enclosing class declaration */
class Enclosing {
private:
int x;

/* start of Nested class declaration */
class Nested { int y;
void NestedFun(Enclosing *e) { cout<x; // works fine: nested class can access // private members of Enclosing class }
}; // declaration Nested class ends here }; // declaration Enclosing class ends here

int main() {

}

`

Program 2

CPP `

#include

using namespace std;

/* start of Enclosing class declaration */
class Enclosing {

int x;

/* start of Nested class declaration */
class Nested { int y;
}; // declaration Nested class ends here

void EnclosingFun(Nested *n) { cout<y; // Compiler Error: y is private in Nested }
}; // declaration Enclosing class ends here

int main() {

}

`

References:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf

Similar Reads

C++ Overview







C++ Basics







C++ Variables and Constants






C++ Data Types and Literals









C++ Operators








C++ Input/Output






C++ Control Statements












C++ Functions








C++ Pointers and References