Scope Resolution Operator


  • Represented by ::, it is used to access global variables (when there is a conflict with local variables), namespace members, nested classes, and static members (though static members are just one common use case)

How is it different from .?

. is used to access non-static members of an object (instance) of a class.

How is it different from Java's ::?

In Java, :: is a method reference operator used for referencing methods or constructors in a more functional programming style.

Type Inference


auto variable_name = expression;
  • The Compiler is able to figure out the Datatype of expression during compilation automatically

Block-based Class Structure


class Node {
private:
    int val;      // This is private by default
    int freq;
 
public:
	Node(int val, int freq) { 
		this->val = val;
		this->freq = freq; 
	}
};
 
  • In C++, access modifiers (public, private, protected) are block-based. They apply to all members declared after them until another access modifier appears

Pointer vs Reference


int* ptr = &x; // Pointer points to the address of x
 
int& ref = x; // Create a reference to x
  • References in C++ are an alias for an existing variable
  • For structure, accessing attributes with pointer to a structure requires ->, but reference can access directly with .