第4章作用域及成员指针 4.1 作用域 4.2名字空间 4.3成员指针 4.4 const、volatile和mutable 4.5 引用对象
第4章 作用域及成员指针 4.1 作用域 4.2 名字空间 4.3 成员指针 4.4 const、volatile和mutable 4.5 引用对象
作用域 作用域: 标识符起作用的范围。作用域运算符:既 是单目运算符,又是双目运算符。优先级和结合 性同括号 ▣单目:用于限定全局标识符(类型名、变量名以及常量 名等) ·双目:用于限定类的枚举元素、数据成员、函数成员以 及类型成员等。双目运算符:还用于限定名字空间成 员,以及恢复自基类继承的成员的访问权限。 在类体外定义数据和函数成员时,必须用双目:限 定类的数据和函数成员,以便区分不同类之间的 同名成员
4.1 作用域 作用域:标识符起作用的范围。作用域运算符:: 既 是单目运算符,又是双目运算符。优先级和结合 性同括号。 单目::用于限定全局标识符 (类型名、变量名以及常量 名等 ) 双目::用于限定类的枚举元素、数据成员、函数成员以 及类型成员等。双目运算符::还用于限定名字空间成 员,以及恢复自基类继承的成员的访问权限。 在类体外定义数据和函数成员时,必须用双目:: 限 定类的数据和函数成员,以便区分不同类之间的 同名成员
作用域 作用域分为面向过程的作用域(C传统的作用域)和 面向对象的作用域。 面向过程的:词法单位的作用范围从小到大可以分为四 级:①作用于表达式内,②作用于函数内,③作用于程 序文件内,④作用于整个程序。 面向对象的:词法单位的作用范围从小到大可以分为五 级:①作用于表达式内,②作用于函数成员内,③作用 于类或派生类内,④作用于基类内,⑤作用于虚基类 内。 ■ 标识符的作用域越小,访问的优先级别就越高。 当函数成员参数和数据成员名称相同时,优先访 问的是函数成员的参数
4.1 作用域 作用域分为面向过程的作用域(C传统的作用域 ) 和 面向对象的作用域。 面向过程的:词法单位的作用范围从小到大可以分为四 级:①作用于表达式内,②作用于函数内,③作用于程 序文件内,④作用于整个程序。 面向对象的:词法单位的作用范围从小到大可以分为五 级:①作用于表达式内,②作用于函数成员内,③作用 于类或派生类内,④作用于基类内,⑤作用于虚基类 内。 标识符的作用域越小,访问的优先级别就越高。 当函数成员参数和数据成员名称相同时,优先访 问的是函数成员的参数
4.1作用域 【例4.1】定义二维及三维坐标上的点的类型。 class POINT2D{ 1定义二维坐标点 ■ int x,yi public: int getx(); //获得点的x轴坐标 POINT2D(intX,inty)X//intx访问优先于数据成员x ■ POINT2D:X=x; //POINT2D:x为类的数据成员x POINT2D:y=yi } ▣i
4.1 作用域 【例4.1】定义二维及三维坐标上的点的类型。 class POINT2D{ //定义二维坐标点 int x, y; public: int getx( ); //获得点的 x轴坐标 POINT2D (int x, int y){ // int x访问优先于数据成员 x POINT2D::x=x; //POINT2D::x为类的数据成员 x POINT2D::y=y; } };
4.1 作用域 class POINT3D{ /川定义三维坐标点 int x,y,zi public: int getx(); /获得点的x轴坐标 POINT3D (int x,int y,int z) POINT3D::X=X; //POINT:3D:x为类的数据成员x ■ POINT3D:y=yi POINT3D:z=Z } i
4.1 作用域 class POINT3D{ //定义三维坐标点 int x, y, z; public: int getx( ); //获得点的 x轴坐标 POINT3D (int x, int y, int z){ POINT3D::x=x; //POINT3D::x为类的数据成员 x POINT3D::y=y; POINT3D::z=z; } };