IPv4 itself does not know or care whether IPs are private or public.
Packets traversing the public Internet only use public addresses. So if an internal machine with a private IP wants to communicate with the public internet then NAT will be needed to translate the addresses.
Many networks are configured in an arrangement with the nat on the border between a separate "public network" and "private network". In this arrangement machines on the private side of the border have private IP addresses, so the traffic looks like what Zac mentioned in his answer.
But it's perfectly possible to have a network where devices with private IPs and public IPs coexist and talk to each other via plain routers. If only the devices with public IPs need to talk to the internet then such a network does not need NAT at all. If private IP devices do need to talk to the internet then their traffic will need to be natted, but this does not mean all traffic needs to be. Either the NAT can be on the gateway but with the NAT rules scoped to only apply to particular traffic or policy routing can be used on the main gateway to send traffic originating from private IPs to a seperate NAT box.