All Exams Test series for 1 year @ ₹349 only
Question

Which one of the following is correct, when a class grants friend status to another class ?

The correct answer is
All member functions of the class granted friendship have unrestricted access to the members of the class granting the friendship.

Understanding C++ Friend Class Declaration

In C++, the $friend$ keyword allows a class or function to access the private and protected members of another class. When one class (let's call it Class A) declares another class (Class B) as its $friend$, it grants specific access privileges.

Friendship Access Rules

The declaration of friendship is asymmetric. When Class A declares Class B as a friend:

  • Class B's member functions can access the private and protected members of Class A.
  • This access is granted to all member functions of Class B.
  • Class A's members do not automatically gain access to Class B's members.
  • Friendship is not transitive (if A is a friend of B, and B is a friend of C, A is not automatically a friend of C).
  • Friendship is not reciprocal; Class B must explicitly declare Class A as a friend if it needs similar access.

Analyzing the Options

  • Option 1: Incorrect. The member functions of the class granting friendship (Class A) cannot access the members of the friend class (Class B) just because of the friendship declaration.
  • Option 2: Correct. This accurately describes the relationship. The class *granted* friendship (Class B) gains access to the members of the class that *granted* the friendship (Class A).
  • Option 3: Incorrect. Friendship must be explicitly declared and is not automatically reciprocal.
  • Option 4: Incorrect. The concept of friend classes is a valid and important feature in C++.

Therefore, the correct statement is that all member functions of the class granted friendship have unrestricted access to the members of the class granting the friendship.

Was this answer helpful?

Important Questions from OOPs concept

  1. Match List I with List II
    List IList II
    A. OverloadingI. Since function call is resolved during run time, the execution is Slow.
    B. Early bindingII. Since function call is resolved during compilation time, the execution is much faster.
    C. OverridingIII. Supports compile-time polymorphism.
    D. Late BindingIV. Supports run-time polymorphism.

    Choose the correct answer from the options given below:
  2. Which among the following best describes polymorphism ?
  3. Which operator is used for dynamic memory allocation in C++?

  4. Which of the following is not true about constructor
  5. Match the LIST-I with LIST-II
    LIST-I (file mode parameters)LIST-II (Meaning)
    A. ios::ateI. Go to end of file on opening
    B. ios::inII. Open fails if the file already exists.
    C. ios::nocreateIII. Open file for reading only
    D. ios::noreplaceIV. Open fails if the file does not exist.
    Choose the correct answer from the options given below:
Need Expert Advice?

Start Your Preparation with Prepp Mobile App

Download the app from Google Play & App Store
Download the app from Google Play & App Store
Prepp Mobile App