# C++ Notes: Classes - Visibility - public and private

## Public and Private parts

All members (fields and methods) of a class are private by default (no code outside the class can reference them), whereas fields of a struct are public, meaning that anyone can use them. For example,

    struct Product {
       char mfg_id[4];    // 4 char code for the manufacturer.
       char prod_id[8];   // 8-char code for the product
       int  price;        // price of the product in dollars.
       int  qty_on_hand;  // quantity on hand in inventory
    };

could be rewritten as a class like this

    class Product {
      public:
        char mfg_id[4];    // 4 char code for the manufacturer.
        char prod_id[8];   // 8-char code for the product
        int  price;        // price of the product in dollars.
        int  qty_on_hand;  // quantity on hand in inventory
    };

The `public` and `private` keywords may be written before any declarations, but it is common to group all public members, then all private members. For example,

    class Point {
      public:
        int getX();
        int getY();
        int setX();
        int setY();

      private:
        int x;
        int y;
    };