#include<iostream>voidprint_line(constchar*label,intvalue){std::cout<<label<<" = "<<value<<"\n";}intmain(){std::cout<<"const value\n";constinta=10;print_line("a",a);// a = 20; // error: a is conststd::cout<<"\nconst reference\n";intx=10;constint&r=x;print_line("r before x changes",r);// r = 20; // error: cannot modify through const referencex=20;print_line("r after x changes",r);std::cout<<"\npointer to const value\n";intp_value1=100;intp_value2=200;constint*pointer_to_const=&p_value1;print_line("*pointer_to_const",*pointer_to_const);// *pointer_to_const = 150; // error: value is read-only through pointerpointer_to_const=&p_value2;// OK: pointer can changeprint_line("*pointer_to_const after re-point",*pointer_to_const);std::cout<<"\nconst pointer\n";intwritable_value=300;intother_value=400;int*constconst_pointer=&writable_value;*const_pointer=350;// OK: pointed value is writableprint_line("writable_value",writable_value);print_line("other_value",other_value);// const_pointer = &other_value; // error: pointer itself is conststd::cout<<"\nconst pointer to const value\n";intlocked_value=500;constint*constlocked_pointer=&locked_value;print_line("*locked_pointer",*locked_pointer);// *locked_pointer = 600; // error: cannot modify value through pointer// locked_pointer = &other_value; // error: cannot move pointer}
const value
a = 10
const reference
r before x changes = 10
r after x changes = 20
pointer to const value
*pointer_to_const = 100
*pointer_to_const after re-point = 200
const pointer
writable_value = 350
other_value = 400
const pointer to const value
*locked_pointer = 500
Run online
Copy the full example and run it in the embedded OneCompiler C++ runtime.