Bird
Raised Fist0
C++programming~5 mins

Getter and setter methods in C++

Choose your learning style10 modes available
Introduction

Getter and setter methods help us safely get or change the value of a private variable in a class.

When you want to control how a variable is read or changed.
When you want to hide the details of how data is stored inside a class.
When you want to check or change values before saving them.
When you want to keep variables private but still allow access.
When you want to make your code easier to maintain and understand.
Syntax
C++
class ClassName {
private:
    DataType variable;
public:
    DataType getVariable() {
        return variable;
    }
    void setVariable(DataType value) {
        variable = value;
    }
};

Getter methods usually start with get and return the variable's value.

Setter methods usually start with set and take a parameter to update the variable.

Examples
This example shows a getter and setter for age. The setter checks that age is not negative before setting it.
C++
class Person {
private:
    int age;
public:
    int getAge() {
        return age;
    }
    void setAge(int a) {
        if (a >= 0) {
            age = a;
        }
    }
};
Here, the setter ensures the balance cannot be set to a negative number.
C++
class BankAccount {
private:
    double balance;
public:
    double getBalance() {
        return balance;
    }
    void setBalance(double b) {
        if (b >= 0) {
            balance = b;
        }
    }
};
Sample Program

This program creates a Car object, sets its speed to 50, then tries to set it to -10. The setter prevents negative speed by setting it to 0 instead.

C++
#include <iostream>
using namespace std;

class Car {
private:
    int speed;
public:
    int getSpeed() {
        return speed;
    }
    void setSpeed(int s) {
        if (s >= 0) {
            speed = s;
        } else {
            speed = 0;
        }
    }
};

int main() {
    Car myCar;
    myCar.setSpeed(50);
    cout << "Speed is: " << myCar.getSpeed() << " km/h" << endl;
    myCar.setSpeed(-10); // invalid speed
    cout << "Speed after invalid set: " << myCar.getSpeed() << " km/h" << endl;
    return 0;
}
OutputSuccess
Important Notes

Always keep variables private to protect data.

Use setters to add checks before changing values.

Getters let you read values without changing them.

Summary

Getter and setter methods control access to private variables.

Setters can check values before saving them.

Getters return the current value safely.

Practice

(1/5)
1. What is the main purpose of getter and setter methods in C++ classes?
easy
A. To control access to private variables safely
B. To make variables public automatically
C. To delete variables from the class
D. To print variable values directly

Solution

  1. Step 1: Understand encapsulation in classes

    Getter and setter methods are used to access and modify private variables safely without exposing them directly.
  2. Step 2: Identify the role of getters and setters

    Getters return the value, setters allow controlled modification, often with validation.
  3. Final Answer:

    To control access to private variables safely -> Option A
  4. Quick Check:

    Getter and setter = control access [OK]
Hint: Getters and setters protect private data access [OK]
Common Mistakes:
  • Thinking getters/setters make variables public
  • Confusing setters with printing functions
  • Assuming getters modify data
2. Which of the following is the correct syntax for a setter method in C++ to set a private integer variable age?
easy
A. int setAge() { return age; }
B. void setAge(int a) { age = a; }
C. void getAge(int a) { age = a; }
D. int age(int a) { age = a; }

Solution

  1. Step 1: Identify setter method signature

    A setter usually returns void and takes a parameter to set the private variable.
  2. Step 2: Match correct syntax

    void setAge(int a) { age = a; } matches: void return type, parameter int a, and sets age = a.
  3. Final Answer:

    void setAge(int a) { age = a; } -> Option B
  4. Quick Check:

    Setter = void + parameter + assign [OK]
Hint: Setter methods return void and take a parameter [OK]
Common Mistakes:
  • Using return type int for setter
  • Naming setter as getAge
  • Setter returning a value
3. What will be the output of the following code?
#include <iostream>
class Person {
private:
  int age;
public:
  void setAge(int a) { if(a >= 0) age = a; else age = 0; }
  int getAge() { return age; }
};

int main() {
  Person p;
  p.setAge(-5);
  std::cout << p.getAge();
  return 0;
}
medium
A. Garbage value
B. -5
C. 0
D. Compilation error

Solution

  1. Step 1: Analyze setter behavior with negative input

    The setter checks if the input is >= 0; if not, it sets age to 0.
  2. Step 2: Check what happens with -5

    Since -5 < 0, age is set to 0.
  3. Final Answer:

    0 -> Option C
  4. Quick Check:

    Negative input sets age to 0 [OK]
Hint: Setter validates input before setting value [OK]
Common Mistakes:
  • Assuming negative value is stored
  • Expecting garbage value from uninitialized variable
  • Thinking code won't compile
4. Identify the error in the following setter method and choose the correct fix:
class Box {
private:
  int length;
public:
  void setLength() { length = l; }
};
medium
A. Remove the method entirely
B. Change return type to int
C. Make length public instead
D. Add parameter int l to setLength method

Solution

  1. Step 1: Check setter method parameters

    The setter tries to assign 'l' but has no parameter 'l' defined.
  2. Step 2: Fix by adding parameter

    Adding 'int l' as a parameter allows passing the value to set length.
  3. Final Answer:

    Add parameter int l to setLength method -> Option D
  4. Quick Check:

    Setter needs parameter to assign value [OK]
Hint: Setter must have parameter to set value [OK]
Common Mistakes:
  • Forgetting to add parameter
  • Changing return type unnecessarily
  • Making variable public instead of fixing setter
5. You want to create a class Temperature that stores temperature in Celsius but only allows values between -273 and 1000. Which setter method correctly enforces this rule?
hard
A. void setTemp(int t) { if(t >= -273 && t <= 1000) temp = t; else temp = -273; }
B. void setTemp(int t) { temp = t; }
C. int setTemp(int t) { if(t >= -273) temp = t; return temp; }
D. void setTemp() { temp = 0; }

Solution

  1. Step 1: Understand the value range requirement

    Temperature must be between -273 and 1000 inclusive.
  2. Step 2: Check which setter enforces this range

    void setTemp(int t) { if(t >= -273 && t <= 1000) temp = t; else temp = -273; } checks the range and sets temp accordingly; others do not enforce limits properly.
  3. Final Answer:

    void setTemp(int t) { if(t >= -273 && t <= 1000) temp = t; else temp = -273; } -> Option A
  4. Quick Check:

    Setter validates range before setting [OK]
Hint: Use if-condition in setter to validate input range [OK]
Common Mistakes:
  • Not validating input range
  • Setter without parameters
  • Setter returning int instead of void
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