MockExams

Classes, Objects, Static Members, Friend Functions & Friend Classes

AI draft, not yet reviewedUnit 4: Classes and ObjectsAbout 2 minutes

Idea in plain words

Class encapsulates private implementation and public interfaces. Objects are runtime instances.

Exam tip

High-yield exam topic (Very High).

Explanation

Classes in C++ separate interface from implementation. While strict encapsulation prohibits external functions from probing private state, cooperating abstractions (such as Matrix and Vector classes, or custom stream operators) require controlled structural access, which friend functions provide without exposing internals globally.

Key points

  • Static Data Members: Shared across all instances of a class; stored in static/global memory; must be defined outside class body; initialized before main().
  • Static Member Functions: Can only access static data members and invoke static member functions; do not have a this pointer.
  • Friend Functions: Non-member functions granted access to private and protected members via friend declaration.
  • Friend Class: All member functions of the friend class have full access to private members of the granting class.

Example

Example

Static member count keeps track of total active player objects in a multiplayer game: Player p1, p2; Player::getCount() returns 2.

Code examples

// Static Members & Friend Function Demonstration
#include <iostream>
using namespace std;

class Complex; // Forward declaration

class Calculator {
public:
    void printSum(Complex c1, Complex c2);
};

class Complex {
private:
    float real, imag;
    static int objectCount; // Shared static variable

public:
    Complex(float r = 0, float i = 0) : real(r), imag(i) { objectCount++; }
    static int getCount() { return objectCount; } // Static member function

    // Friend function declaration
    friend Complex addComplex(const Complex &a, const Complex &b);
    friend void Calculator::printSum(Complex c1, Complex c2);
};

int Complex::objectCount = 0; // Definition outside class

Complex addComplex(const Complex &a, const Complex &b) {
    return Complex(a.real + b.real, a.imag + b.imag); // Accesses private members directly
}

Exam questions

  • [8 Marks] What is a friend function? Explain its characteristics, syntax, and scenarios where friend functions are necessary.
  • [7 Marks] Explain static data members and static member functions with a working C++ program.
  • [7 Marks] Write a C++ program to add two private attributes of two different classes using a common friend function.

BIT154CO

Switch Course

On this page

Past Exam Questions

Not asked in past exams yet

This topic hasn't appeared in previous exam papers.

Search BIT154CO

Reading

Theme
Reading mode
Text size
Default
Font
Line width
Line spacing