Bird
Raised Fist0
C++programming~30 mins

Data members and member functions in C++ - Mini Project: Build & Apply

Choose your learning style10 modes available
Data members and member functions
๐Ÿ“– Scenario: You are creating a simple program to manage a book's information in a library system.
๐ŸŽฏ Goal: Build a C++ class called Book with data members and member functions to store and display book details.
๐Ÿ“‹ What You'll Learn
Create a class named Book
Add data members title and author of type std::string
Add a member function displayInfo() that prints the book's title and author
Create an object of Book and call displayInfo()
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
Managing book information is common in library software, bookstore inventory, and reading apps.
๐Ÿ’ผ Career
Understanding classes, data members, and member functions is fundamental for software development in C++.
Progress0 / 4 steps
1
Create the Book class with data members
Create a class called Book with two public data members: title and author, both of type std::string.
C++
Hint

Use class Book { public: std::string title; std::string author; }; to define the class.

2
Add a member function to display book info
Inside the Book class, add a public member function called displayInfo() that prints the title and author separated by a comma and a space.
C++
Hint

Define void displayInfo() { std::cout << title << ", " << author << std::endl; } inside the class.

3
Create a Book object and set data members
In main(), create an object called myBook of type Book. Set myBook.title to "The Great Gatsby" and myBook.author to "F. Scott Fitzgerald".
C++
Hint

Use Book myBook; then assign myBook.title = "The Great Gatsby"; and myBook.author = "F. Scott Fitzgerald";.

4
Call the displayInfo() function to show book details
In main(), call the displayInfo() member function on the myBook object to print the book's title and author.
C++
Hint

Call myBook.displayInfo(); to print the book details.

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