C++ inherits every C operator and adds a few of its own for memory management and scoping.
int a = 7, b = 2;
std::cout << a / b << "\n"; // 2, same integer-division truncation as C
std::cout << a % b << "\n"; // 1
int *p = new int(42); // C++ way to allocate on the heap (replaces C's malloc)
delete p; // C++ way to free it (replaces C's free)
int *q = nullptr; // C++11: type-safe null pointer (replaces C's NULL macro)
Arithmetic, relational, and logical operators behave identically to C — integer division still truncates, &&/|| still short-circuit. bool being a real type in C++ (unlike C) means relational expressions produce genuine true/false values rather than plain 0/1 integers, though they still convert to 0/1 when needed.
new and delete are C++'s dedicated memory-allocation operators, replacing malloc/free. Unlike malloc, new is type-aware — new int(42) both allocates the right amount of memory and calls the type's constructor if it has one (irrelevant for a plain int, but essential for class objects), and it returns a correctly-typed pointer without needing a cast. nullptr (C++11) is a distinct, type-safe null-pointer value — unlike C's NULL, which is often just the integer 0 in disguise, nullptr can't accidentally be mistaken for an integer in an overloaded function call, avoiding an entire category of subtle bugs.
::, the scope resolution operator, accesses names inside a namespace or class — std::cout, MyClass::staticMethod() — and will come up constantly once namespaces and classes are introduced.