Vale allí tienes, usamos el while o do while como estructuras de repetición, osea que el programa que este dentro de while se repetirá cuantas veces tu quieras hasta que cumpla una condición, donde tendrá que detenerse.
En este caso la condición es la variable "uso" que como valor inicial le puse cero;
Y la condición del while es uso==cero, osea que mientras uso sea igual a cero el programa se repetirá, y para poder detener esas repeticiones tenemos que cambiar el valor de uso por cualquier otro valor que no sea cero.
Como observaras en la opción 5 del programa dice "salir del programa " y al elegir esa opcion veras que la variable uso cambia de valor por lo que el esquema repetitivo de while finalizara allí.
Espero te sirva de ayuda.
#include<iostream>
#include<conio.h>
using namespace std;
void main(){
int op,uso;
int a,b;
uso=0;
while(uso==0){
cout<<"********* CALCULADORA EN C++ ************"<<endl;
cout<<"[1] Suma :a+b"<<endl;
cout<<"[2] Resta :a-b"<<endl;
cout<<"[3] Multiplicación :a*b"<<endl;
cout<<"[4] División :a/b"<<endl;
cout<<"[5] Salir del programa "<<endl;
cout<<"elija una opción: ";cin>>op;
switch(op){
case 1:{cout<<"ingrese a: ";cin>>a;
cout<<"ingrese b: ";cin>>b;
cout<<a<<" + "<<b<<" ="<<a+b<<endl;
uso=0;}
break;
case 2:{cout<<"ingrese a: ";cin>>a;
cout<<"ingrese b: ";cin>>b;
cout<<a<<" - "<<b<<" ="<<a-b<<endl;
uso=0;}
break;
case 3:{cout<<"ingrese a: ";cin>>a;
cout<<"ingrese b: ";cin>>b;
cout<<a<<" por "<<b<<" ="<<a*b<<endl;
uso=0;}
break;
case 4:{cout<<"ingrese a: ";cin>>a;
cout<<"ingrese b: ";cin>>b;
cout<<a<<" / "<<b<<" ="<<a/b<<endl;
cout<<"residuo: "<<a%b<<endl;
uso=0;
break; }
case 5:{cout<<"Muchas gracias por usar la calculadora, VALE:)!!"<<endl;
uso=1;}
break;
default: cout<<"opción invalida!!!"<<endl;
}}
getch();}