This blog is about providing theory as well as simple executable codes of different programming languages such as java, C, C++, and web programming, etc. This blog will be helpful to the IT students to learn about programming.

Wednesday, March 1, 2023

Differentiate between public, protected and private class members with example.

 In C++, class members can have one of three access specifiers: public, protected, and private. These access specifiers determine the level of access that the class's data and member functions have from outside the class and its derived classes. Here is a brief explanation of each access specifier:

1. Public: Public members of a class are accessible from anywhere in the program. Public member functions can be called by any object of the class, as well as from outside the class. Public data members are also accessible from outside the class.

Example:

class Car {
public:
    string make;
    string model;
    int year;
    
    void drive() {
        cout << "Driving " << make << " " << model << " " << year << endl;
    }
};
int main() {
    Car myCar;
    myCar.make = "Toyota";
    myCar.model = "Corolla";
    myCar.year = 2022;
    myCar.drive();  // public member function can be called by any object
    return 0;
}

2. Protected: Protected members of a class are accessible from within the class and its derived classes, but not from outside the class. Protected member functions can be called by any object of the class, as well as from within derived classes. Protected data members are not accessible from outside the class, but can be accessed by derived classes.

Example:

class Animal {
protected:
    string species;
    int age;
    
    void growOlder() {
        age++;
    }
};
class Cat : public Animal {
public:
    void meow() {
        cout << "Meow! I'm a " << species << " and I'm " << age << " years old." << endl;
    }
};
int main() {
    Cat myCat;
    myCat.species = "cat";  // protected data member is accessible in derived class
    myCat.age = 3;  // protected data member is accessible in derived class
    myCat.growOlder();  // protected member function can be called in derived class
    myCat.meow();
    return 0;
}

3. Private: Private members of a class are only accessible from within the class, and not from outside the class or its derived classes. Private member functions can be called by other member functions of the class, but not from outside the class. Private data members are not accessible from outside the class or its derived classes.

Example:

class BankAccount {
private:
    double balance;
    
    void deduct(double amount) {
        balance -= amount;
    }
    
public:
    BankAccount(double initialBalance) {
        balance = initialBalance;
    }
    
    void deposit(double amount) {
        balance += amount;
    }
    
    void withdraw(double amount) {
        if (balance >= amount) {
            deduct(amount);  // private member function can be called by other member function
        } else {
            cout << "Insufficient funds!" << endl;
        }
    }
};
int main() {
    BankAccount myAccount(1000);
    myAccount.deposit(500);
    myAccount.withdraw(200);
    myAccount.withdraw(2000);  // private member function cannot be called from outside the class
    return 0;
}

No comments:

Post a Comment

If you have any doubts, please let me know

Slider Widget