Bird
Raised Fist0
C++programming~20 mins

Data members and member functions in C++ - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
πŸŽ–οΈ
Data Members and Member Functions Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of member function modifying data member
What is the output of this C++ program?
C++
class Counter {
public:
    int count = 0;
    void increment() {
        count++;
    }
};

int main() {
    Counter c;
    c.increment();
    c.increment();
    std::cout << c.count << std::endl;
    return 0;
}
A2
B0
C1
DCompilation error
Attempts:
2 left
πŸ’‘ Hint
The increment function increases the count by one each time it is called.
❓ Predict Output
intermediate
2:00remaining
Output of const member function accessing data member
What will this program print?
C++
class Box {
    int length = 5;
public:
    int getLength() const {
        return length;
    }
};

int main() {
    Box b;
    std::cout << b.getLength() << std::endl;
    return 0;
}
A5
B0
CCompilation error due to const function
DUndefined behavior
Attempts:
2 left
πŸ’‘ Hint
Const member functions can read data members but cannot modify them.
❓ Predict Output
advanced
2:00remaining
Output when accessing private data member directly
What happens when you try to compile and run this code?
C++
class Sample {
private:
    int value = 10;
public:
    int getValue() {
        return value;
    }
};

int main() {
    Sample s;
    std::cout << s.value << std::endl;
    return 0;
}
A10
BRuntime error
C0
DCompilation error: 'value' is private
Attempts:
2 left
πŸ’‘ Hint
Private members cannot be accessed directly outside the class.
❓ Predict Output
advanced
2:00remaining
Output of static data member shared across objects
What is the output of this program?
C++
class Tracker {
public:
    static int count;
    Tracker() { count++; }
};

int Tracker::count = 0;

int main() {
    Tracker t1;
    Tracker t2;
    Tracker t3;
    std::cout << Tracker::count << std::endl;
    return 0;
}
A0
B3
C1
DCompilation error due to static member
Attempts:
2 left
πŸ’‘ Hint
Static members are shared by all objects of the class.
🧠 Conceptual
expert
2:00remaining
Effect of const member function on data members
Which statement is true about const member functions in C++?
AThey cannot access any data members of the class.
BThey can modify any data member of the class.
CThey can modify data members marked as mutable.
DThey can only be called on non-const objects.
Attempts:
2 left
πŸ’‘ Hint
Const member functions promise not to change the object except for mutable members.

Practice

(1/5)
1. Which of the following best describes a data member in a C++ class?
easy
A. A keyword used to define a class
B. A function that performs actions on an object
C. A variable that holds information about an object
D. A special type of loop inside a class

Solution

  1. Step 1: Understand what data members are

    Data members are variables inside a class that store information about each object created from that class.
  2. Step 2: Differentiate from member functions

    Member functions are actions or behaviors, not storage. Keywords and loops are unrelated to data members.
  3. Final Answer:

    A variable that holds information about an object -> Option C
  4. Quick Check:

    Data member = variable storing object info [OK]
Hint: Data members store data, member functions do actions [OK]
Common Mistakes:
  • Confusing data members with member functions
  • Thinking data members are keywords
  • Mixing data members with control structures
2. Which of the following is the correct way to declare a member function named display inside a C++ class?
easy
A. void display();
B. display void();
C. void display {}
D. function void display();

Solution

  1. Step 1: Recall correct member function syntax

    Member functions are declared with return type, name, and parentheses, ending with a semicolon inside the class.
  2. Step 2: Check each option

    void display(); matches correct syntax: return type 'void', function name 'display', parentheses, and semicolon. Others are invalid syntax.
  3. Final Answer:

    void display(); -> Option A
  4. Quick Check:

    Correct function declaration = void display(); [OK]
Hint: Member functions: returnType name(); inside class [OK]
Common Mistakes:
  • Omitting parentheses after function name
  • Using wrong order of return type and name
  • Missing semicolon after declaration
3. What will be the output of the following C++ code?
#include <iostream>
class Box {
public:
  int length;
  void setLength(int len) {
    length = len;
  }
  int getLength() {
    return length;
  }
};

int main() {
  Box box1;
  box1.setLength(10);
  std::cout << box1.getLength();
  return 0;
}
medium
A. 0
B. Compilation error
C. length
D. 10

Solution

  1. Step 1: Understand member function calls

    The function setLength(10) sets the data member length to 10 for object box1.
  2. Step 2: Check output from getLength()

    The function getLength() returns the current value of length, which was set to 10.
  3. Final Answer:

    10 -> Option D
  4. Quick Check:

    Set length to 10, get length returns 10 [OK]
Hint: Setter sets value, getter returns it [OK]
Common Mistakes:
  • Assuming default value 0 is printed
  • Confusing function names
  • Expecting compilation error due to missing constructor
4. Identify the error in the following C++ class code:
#include <iostream>
class Person {
  int age;
public:
  void setAge(int a) {
    age = a;
  }
  int getAge() {
    return age;
  }
};

int main() {
  Person p;
  p.age = 25;
  std::cout << p.getAge();
  return 0;
}
medium
A. Error: 'age' is private and cannot be accessed directly
B. No error, output is 25
C. Error: Missing return type for getAge
D. Error: setAge function is not called

Solution

  1. Step 1: Check access to data member 'age'

    The data member 'age' is private by default because no access specifier is given before it.
  2. Step 2: Analyze main function usage

    In main, code tries to access 'p.age = 25;' directly, which is not allowed for private members, causing a compilation error.
  3. Final Answer:

    Error: 'age' is private and cannot be accessed directly -> Option A
  4. Quick Check:

    Private members can't be accessed outside class [OK]
Hint: Private members need public functions to access [OK]
Common Mistakes:
  • Trying to access private data members directly
  • Ignoring default private access in classes
  • Assuming no error if setter is not called
5. Given the class below, which code snippet correctly increases the count data member by 1 for an object obj?
class Counter {
private:
  int count = 0;
public:
  void increment() {
    count++;
  }
};
hard
A. obj.count = obj.count + 1;
B. obj.increment();
C. Counter::increment();
D. obj.count++; obj.increment();

Solution

  1. Step 1: Understand the class design

    The class has a private data member count = 0 and provides a public member function increment() that increases count by 1.
  2. Step 2: Check each option for correctness

    obj.count = obj.count + 1; tries to access private count directly, compilation error. obj.increment(); calls the member function correctly. Counter::increment(); tries to call non-static member function without an object, invalid. obj.count++; obj.increment(); first accesses private count, error.
  3. Final Answer:

    obj.increment(); -> Option B
  4. Quick Check:

    Use member function to change data member [OK]
Hint: Use object's member function to update data members [OK]
Common Mistakes:
  • Calling member function without object
  • Manually changing data member instead of using function
  • Incrementing count twice accidentally
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard