class student{
public: string name;
}
在c++代码中,指向对象的常指针,指向常对象的指针和常引用都是出现频率比较高。刚学习C++不久,通过阅读网上资料和教材,得出下面的一些总结:
1:指向对象的常指针,表示指针永远都是指向同一个对象,不能改变成指向别的对象
a:基本形式:student * const p = &stu;
如果我们使用如 p = &stu1 将是错误的,因为指向对象的常指针一旦被初始化,就不能再修改成指向别的对象了
2:指向常对象的指针,表示不能通过指针改变对象的值
a:基本形式:const student * p = &stu;
不能在后面的语句中使用类似 (*p).name = "Monkey" 的语句企图改变stu的值
b:在函数调用中,如果实参是指向常对象的指针,那么形参也必须是指向常对象的指针,这样就不能在调用函数的过程中该变实参的值;如果形参是指向常对象的指针,则实参可以是指向常对象的指针,也可以不是。
c:如果对象已经被声明为常对象,则指向这个对象的指针也必须是指向常对象的指针,如
const student stu; //常对象
const student * p = &stu; //指向常对象的指针
3:常引用
a:如果常对象的引用也必须是常引用,如
const int &a = 2; //2是常量,所有前面的const是不能省略的
const student stu;
const student &s = stu; //常对象的引用页必须是常引用
b:时常被使用在实参和形参的传递中,如果我们不希望在函数调用的过程中修改实参的值,可以使用常引用作为形参