公用数据友元类模板

上传人:kms****20 文档编号:51469095 上传时间:2018-08-14 格式:PPT 页数:27 大小:154.50KB
返回 下载 相关 举报
公用数据友元类模板_第1页
第1页 / 共27页
公用数据友元类模板_第2页
第2页 / 共27页
公用数据友元类模板_第3页
第3页 / 共27页
公用数据友元类模板_第4页
第4页 / 共27页
公用数据友元类模板_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《公用数据友元类模板》由会员分享,可在线阅读,更多相关《公用数据友元类模板(27页珍藏版)》请在金锄头文库上搜索。

1、3.4 共用数据的保护l本节主要内容 3.4.1 常对象 3.4.2 常对象成员 3.4.3 指向对象的常指针 3.4.4 指向常对象的指针变量 3.4.5 对象的常引用13.4 共用数据的保护3.4.1 常对象l作用:定义一个对象时,当其数据成员的值不 希望被修改时,定义该对象为常对象。l与定义常变量类似,必须赋初值。l定义格式:类名 const 对象名 (实参列表) 或 const 类名 对象名 (实参列表) 23.4 共用数据的保护3.4.1 常对象l常对象不能调用非const型的成员函数,除系 统自动调用的构造函数和析构函数之外。l常对象的所有数据成员的值是不能被修改的。l例:cons

2、t time t(10,15,15); 或time const t(10,15,15);t.get_time(); /要求必须是常成员函数33.4 共用数据的保护3.4.1 常对象l常对象的所有数据成员的值是不能被修改的。l编程时出现修改常对象数据成员值的需求,则 将数据成员声明为可变的数据成员,加 mutable。l例:class mutable int hour; ; const time t(10,15,15); t.get_time();void time:get_time() hour+=10; 43.6 共用数据的保护l本节主要内容 3.6.1 常对象 3.6.2 常对象成员 3.

3、6.3 指向对象的常指针 3.6.4 指向常对象的指针变量 3.6.5 对象的常引用53.6 共用数据的保护 3.6.2 常对象成员 (一)常数据成员p与定义常变量一样。int const year; 或 const int year;p只能通过构造函数的参数初始化表对常数据成 员进行初始化。Date:Date (int y):year(y)p对常数据成员,该类所有对象中的该数据成员 的值都是不能改变的,但不同的对象中该数据 成员的值是可以不同的。63.6 共用数据的保护 3.6.2 常对象成员 (二)常成员函数l常成员函数只能引用本类中的数据成员,而不 能修改它们。l注意:声明和定义时都要加

4、const关键字。例:void get_time( ) const;l常成员函数引用数据成员情况表 (p90)l常对象中的成员函数未加const声明,编译器 默认为非const成员函数。73.6 共用数据的保护l本节主要内容 3.6.1 常对象 3.6.2 常对象成员 3.6.3 指向对象的常指针 3.6.4 指向常对象的指针变量 3.6.5 对象的常引用83.6 共用数据的保护 3.6.3 指向对象的常指针p指向对象的常指针:将指向对象的指针变量声 明为const。p特点:指向不能改变,即声明时必须初始化。 但可以改变指向对象数据成员的值。p一般形式:类名 * const 指针变量名= Ti

5、me * const p=p常用作函数的形参,避免在函数的执行过程中 改变指针变量的指向。9P只能指向t13.4 共用数据的保护l本节主要内容 3.4.1 常对象 3.4.2 常对象成员 3.4.3 指向对象的常指针 3.4.4 指向常对象的指针变量 3.4.5 对象的常引用103.4 共用数据的保护 3.4.4 指向常对象的指针变量 (一)指向常变量的指针变量p格式:const 类型 * 指针 或者 类型 const * 指 针; 例如:const int a=5; /定义常变量const int *p= /指向一个常变量p特点:定义后,指针的指向可以改变,但指针 指向对象的内容(值)不可以

6、改变。p例:1112void main( ) const int a = 78 ; const int b = 25 ;int c = 13 ;const int *pi = / 只能指向常变量的/ *pi = 56 ;*pi = 56 ; / 错误, 不能修改所指对象的内容pi = /可以改变指针的指向pi = /可以指向非常变量/ *pi = 99 ;*pi = 99 ;/错误c = 99 ; /正确3.4 共用数据的保护 3.4.4 指向常对象的指针变量 (二)指向常对象的指针变量l常对象,只能用指向常对象的指针指向它。l指向常对象的指针可以指向一个非常对象。l如果要改变非常对象数据成员

7、的值可以直接改 ,但不能通过该指针改变。 例: Time t1(2,34,54);const Time *p= t1.hour=15; () (*p).hour=15;()13指向常对象的指针非常对象3.4 共用数据的保护l本节主要内容 3.4.1 常对象 3.4.2 常对象成员 3.4.3 指向对象的常指针 3.4.4 指向常对象的指针变量 3.4.5 对象的常引用143.4 共用数据的保护 3.4.5 对象的常引用 (一)变量的常引用p 例: int a=24;const int a=66; /正确b=89; /错误,常引用不能被更改153.5 共用数据的保护 3.4.5 对象的常引用 (

8、二)对象的常引用p 例: void fun(const Time () int main() Time t1(10,13,56); fun(t1);coutl类模板l为什么要有类模板l为什么要使用类模板 如果要对功能相同、仅类的数据类型不同的各 种情况,都重新定义一种新的类型,会产生较大 的重复。例如:class compare_int public:compare_int (int a, int b ) x=a; y=b; int max( ) return (xy)? x : y; private:int x,y; ; class compare_char public:compare_c

9、har (char a, char b ) x=a; y=b; char max( ) return (xy)? x : y; private:char x,y; ;void main( ) compare_int c1( 5, 6 );cout class /类体说明 ;其中template 是关键字;中可以有多个参数,其间用逗 号分隔。l使用类模板定义对象的: 类模板名 对象名( 实参列表 );例如:下面是一个数组类模板的例子#include template class compare public:compare (T a, T b ) x=a; y=b; T max( ) return (xy)? x : y; private:T x,y; ;void main( ) compare cmp1(3,7);cout cmp2(a,g);cout cmp3(1.0, 3.0);coutcmp3.max( )“是两个浮点数中最大的数“endl;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号