Skip to content

Commit f794492

Browse files
author
Colin Robertson
authored
Merge pull request #1244 from MicrosoftDocs/FromPublicMasterBranch
Confirm merge from FromPublicMasterBranch to master to sync with https://github.com/MicrosoftDocs/cpp-docs (branch master)
2 parents 6a7bfe5 + 9035b4d commit f794492

File tree

1 file changed

+40
-23
lines changed

1 file changed

+40
-23
lines changed

docs/cpp/member-access-control-cpp.md

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -68,28 +68,44 @@ protected: // Declare protected function for derived classes only.
6868

6969
```cpp
7070
// access_specifiers_for_base_classes.cpp
71-
class BaseClass
72-
{
73-
public:
74-
int PublicFunc(); // Declare a public member.
75-
protected:
76-
int ProtectedFunc(); // Declare a protected member.
77-
private:
78-
int PrivateFunc(); // Declare a private member.
79-
};
80-
71+
class BaseClass
72+
{
73+
public:
74+
int PublicFunc(); // Declare a public member.
75+
protected:
76+
int ProtectedFunc(); // Declare a protected member.
77+
private:
78+
int PrivateFunc(); // Declare a private member.
79+
};
80+
8181
// Declare two classes derived from BaseClass.
82-
class DerivedClass1 : public BaseClass
83-
{
84-
};
85-
86-
class DerivedClass2 : private BaseClass
87-
{
88-
};
89-
90-
int main()
91-
{
92-
}
82+
class DerivedClass1 : public BaseClass
83+
{
84+
void foo()
85+
{
86+
PublicFunc();
87+
ProtectedFunc();
88+
PrivateFunc(); // function is inaccessible
89+
}
90+
};
91+
92+
class DerivedClass2 : private BaseClass
93+
{
94+
void foo()
95+
{
96+
PublicFunc();
97+
ProtectedFunc();
98+
PrivateFunc(); // function is inaccessible
99+
}
100+
};
101+
102+
int main()
103+
{
104+
DerivedClass1 derived_class1;
105+
DerivedClass2 derived_class2;
106+
derived_class1.PublicFunc();
107+
derived_class2.PublicFunc(); // function is inaccessible
108+
}
93109
```
94110

95111
In `DerivedClass1`, the member function `PublicFunc` is a public member and `ProtectedFunc` is a protected member because `BaseClass` is a public base class. `PrivateFunc` is private to `BaseClass`, and it is inaccessible to any derived classes.
@@ -216,5 +232,6 @@ Access Along Paths of an Inheritance Graph
216232

217233
In the figure, a name declared in class `VBase` is always reached through class `RightPath`. The right path is more accessible because `RightPath` declares `VBase` as a public base class, whereas `LeftPath` declares `VBase` as private.
218234

219-
## See also
220-
[C++ Language Reference](../cpp/cpp-language-reference.md)
235+
236+
## See Also
237+
[C++ Language Reference](../cpp/cpp-language-reference.md)

0 commit comments

Comments
 (0)