一、浅拷贝和深拷贝二、只读成员函数三、友元friend内容摘要:

45)。 CPoint dtl (())。 printf (left=%d, top=%d\t, , )。 printf (left=%d, top=%d\n, , )。 } //输出 :left=10,top=20 left=15,top=25 C/C++程序设计 15 成员函数 TopLeft存在只读的和非只读的版本,其中的 语句是一样的。 返回引用的函数可以作为左值,本来只读成员函数不改 变对象的数据状态,如果不在返回类型上加 const限制将导 致对象外部调用对数据的改变。 于是返回引用的只读成员函数在返回类型上由 const前 置限制。 ()为只读对象 d调用只读成员函数。 ()为对象 r调用普通的成员函数。 C/C++程序设计 16 2. volatile关键字 volatile关键字表示内存数据的变更。 volatile关键字和 const关键字的语法是一致的。 const修饰的变量维持恒定或函数不改变相关成员的数 据状态。 与 const相反, volatile关键字限定的对象或成员函数 可以有效的变动。 这种变动可以来自其它的外部进程。 C/C++程序设计 17 [例 ] volatile关键字的用法 include class B { volatile int m_n。 public: B (int v=1) { m_n=v。 } void Set (int n) volatile { m_n=n。 } void Show () const { printf (Show()const。 n=%d\n,m_n)。 } void Show() volatile { printf (Show() volatile。 n=%d\n,m_n)。 } void Show() { printf (Show()。 n=%d\n,m_n)。 } }。 C/C++程序设计 18 void main() { const B c。 ()。 volatile B v(2)。 ()。 (3)。 ()。 B x(4)。 ()。 } /*程序输出结果: */ /*Show() const。 n=1 */ /*Show() volatile。 n=2*/ /*Show() volatile。 n=3 */ /*Show()。 n=4 */ C/C++程序设计 19 volatile对象操作 volatile成员函数 , const对象操作 const 成员函数。 不妨认为 volatile关键字和 const关键字是 一对含意相反的语法修饰词,它们常称为 cv限定词。 对象既可操作 const成员函数也可操作 volatile成员函 数,如果这两个成员函数都存在但不存在普通的版本则导致 调用的歧义。 volatile关键字使用的场合在一般程序中不 多,主要用在系统的程序设计中。 volatile关键字可以和 const同时出现。 如下: volatile const int g_n=1。 这表示程序不能改变变量 g_n的值,但允许系统改变它。 C/C++程序设计 20 3. mutable关键字 关键字 mutable可以局部松动 const对象的不变属性。 如果一个对象前加上 const关键字限制,则这个对象所 有的成员就冻结为右值。 但有时候对于这种约束期望有所放松,此时只需在相关 的成员前冠以 mutable修饰,通知编译器如此成员不受 const的制约。 C/C++程序设计 21 [例 ] mutable关键字注册绝对可变的成员 include class CType { public: mutable long v。 long n。 }。 void main() { const CType cobj={1,2}。 printf (cobj={%d,%d}。 \t,)。 =8。 printf (cobj={%d,%d}。 \n,)。 //=2。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。