网站首页 > 基础教程 正文
对象的常引用
一个变量的引用就是变量的别名。实质上,变量名和引用名都指向同一段内存单元。如果形参为变量的引用名,实参为变量名。那么,在调用函数进行“参数传递(实参传递数据给形参)”的时候,并不是为形参另外开辟一个存储空间(常称为:建立实参的一个拷贝),而是把实参变量的地址传给形参(引用名),这样引用名也指向实参变量。
下面是一个例子,介绍类对象的常引用。
可以看到,定义了stud, stud1对象。定义了set_name()函数,参数是一个“常引用变量”。那么,在 set_name() 函数中不可以修改常引用对象的值。所以,调用:
stud.set_name(stud1);
此时,在set_name()函数中引用stud1对象,而且是const类型,是“常引用”,所以,不可以修改引用对象stud1的数据。从而保护好stud1对象的成员。
在C++面向对象程序设计中,经常用常指针和常引用作为函数参数。这样既保证数据安全,使数据不被随意修改,在调用函数时又不必建立实参变量的拷贝。提高了程序运行效率,又保护数据的安全性。
const 型数据的小结
本小节介绍const型数据和引用,利用它们可以对共用的数据进行保护。下面归纳总结几种const型数据的用法和区别,假设有student类。
(1) student const stud; 或者 const student stud;
表示stud是常对象,它的值在任何情况下都不能够改变。
(2) void student::func() const
表示func()函数是student类中的常成员函数,可以引用,但是,不能够修改本类中的成员变量。
(3) student* const ps;
表示ps是一个student类型的指针,是常指针,所以,不可以修改指针ps的值。但是,可以修改ps指针指向对象的数据。
(4) const student* ps;
表示ps是一个student类型的指针,是指向一个常对象。所以,不可以修改ps指向对象的数据。但是,可以修改ps指针的值。
(5) const student& stud = s;
表示 stud是一个引用,引用s对象。而且是常引用对象。所以,不可以修改stud引用对象的数据。
总结
本章介绍了C++类对象的数据保护,这个知识点体现了面向对象编程的“封装、保护”特性,一个对象可以有隐私的数据,可以不被任何修改的数据。
那么,C++提供了const关键字,可以有效地保护数据的安全性。所以,在很多函数的设计中,为了保护数据的安全性,可以定义为const类型。善于使用const数据类型,可以有效地保护数据的安全性。
读者要仔细分析,掌握好每一个知识点,然后,自己总结出对该知识点的理解。自己总结出来的知识,理解才深刻,才是自己掌握的知识。
- 上一篇: 深入浅出C++引用:理解与应用 c++引用的含义
- 下一篇: C++编程:函数参数类型-引用、指针、值
猜你喜欢
- 2024-10-09 探讨C++中引用变量的原理以及特点
- 2024-10-09 C++编程:函数参数类型-引用、指针、值
- 2024-10-09 深入浅出C++引用:理解与应用 c++引用的含义
- 2024-10-09 c++引用详解 c++引用怎么写
- 2024-10-09 c语言-指针和引用的理解 c中指针和引用的区别
- 2024-10-09 2 C++重点概念理解系列2-理解引用的本质
- 2024-10-09 C++|指针,理解指针从为什么需要指针这种数据类型开始
- 2024-10-09 C|函数指针和指针函数的联系与区别
- 2024-10-09 const、指针、引用的关系 const与指针的关系
- 2024-10-09 C++ API设计:指针vs引用,应对空值、内存分配和可选参数选择之道
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)