C++类的作用域和可见域

在类中定义的数据成员和函数成员的作用域是整个类,这些名称只有在类中(包含类的定义部分和类外函数的实现部分)是可见的,在类外是不可见的。如果发生“屏蔽”的现象,类的成员的可见域小与作用域,但此时可借助this指针或“类名::”的形式访问类成员,这有些类似于使用“::“访问全局变量。

例子:

extern int x=100;

extern int z=100;

class Example

{

int x;

int y;

public :

Example(int x,int y)

{}

void print(int x)

{

cout<<"形参覆盖了成员X变量和全局X变量"<<x<<end1;   //形参X覆盖了全局变量和局部变量X

cout<<"成员X变量"<<(this->x)<<end1;

cout<<"成员X变量"<<Example::x<<end1;

cout<<"全局X变量"<<(::x)<<end1;                           //访问全局变量X

cout<<"全局Z变量"<<z<<end1;                               //没有形参对全局变量Z构成屏蔽,直接访问Z即可

}

}

int main()

(

Example  e;

x.print(5);

return 0;

)

输出结果:

5

0

0

100

200

时间: 2024-11-05 19:32:38

C++类的作用域和可见域的相关文章

C++ Primer笔记3_默认实参_类初探_名字查找与类的作用域

1.默认函数实参 在C++中,可以为参数指定默认值,C语言是不支持默认参数的,Java也不支持! 默认参数的语法与使用: (1)在函数声明或定义时,直接对参数赋值.这就是默认参数: (2)在函数调用时,省略部分或全部参数.这时可以用默认参数来代替. 注意事项: (1)函数默认值只能赋值一次,或者是在声明中,或者是在定义中,都可以. (2)默认参数定义的顺序为自右到左.即如果一个参数设定了缺省值时,其右边的参数都要有缺省值.比如int f(int a, int b=1,int c=2,int d=

MyBatis(四):SqlSession及其工厂类的作用域和生命周期

SqlSession及其工厂类的作用域和生命周期 SqlSession创建流程: 使用SqlSessionFactoryBuilder创建SqlSessionFactory. 使用SqlSessionFactory创建SqlSession. SqlSession可以通过Sql Mapper.class进行数据库操作,或者直接使用SqlSession的方法输入SqlMapper.方法()进行数据库操作,使用完要关闭. SqlSessionFactoryBuilder 就是SqlSessionFac

存储类、生命周期、作用域、链接域

Linux下c内存映像 大方向分为 应用空间 + 内核空间,他俩内存空间布局差不多.这里重点回顾应用空间布局,应用空间氛围代码段 + 数据段(静态数据段+动态数据段) 代码段 为啥是只读的 代码段在编译时就定好了,在程序的运行过程中,不能在代码段去开辟空间,以及释放空间. 包含哪几部分 ELF头.段头部表.init节 参考:剖析可执行文件ELF组成 .text 指令节,也叫代码节,所有函数中的指令都放在了.text节中.能够与指令直接弄在一起的常量,也随指令一起放在了.text中. .rodat

存储类、作用域、生命周期、链接属性

1.linux下C语言程序的内存映像代码段(.text).数据段(.data).bss段.栈.堆的概念 代码段(.text) (1)对应着程序中的代码(函数),代码段在linux中又叫文本段(.text)(2)部分平台下的const修饰的变量. 数据段(.data) 1.显式初始化为非0的全局变量: 2.显式初始化为非0的static局部变量 bss段 1.显式初始化为0或者未显式初始化的全局变量: 2.显式初始化为0或未显式初始化的static局部变量. 栈 局部变量分配在栈上:函数调用传参过

4.7 C语言的存储类,作用域,生命周期,链接属性

C语言背后的运行机制,学会了会对C语言更加熟悉,可以直接看到C语言的骨头里去. 存储类(storage class): ①什么是存储类? 存储类就是变量存储类型,即变量在内存中存储在什么段. 例如:栈:普通局部变量. 数据段(.data):初始化不为零的全局变量,静态局部变量. bss段:初始化为零 或 未初始化的全局变量. (其实bss段就是初始化为0的数据段)   代码段(.text):存放程序执行代码的一块内存区域. ②存储类相关的关键字? auto static register ext

JavaScript函数之作用域 / 作用链域 / 预解析

关于作用域和作用链域的问题,很多文章讲的都很详细,本文属于摘录自己觉得对自己有价值的部分,留由后用,仅供参考,需要查看详细信息请点击我给出的原文链接查看原文件 做一个有爱的搬运工~~ ------------------------------------------------------------------------------------------------------------------------------------------- 作用域 js中作用域只有一种,就是函

7、C_存储类 &amp;amp; 作用域 &amp;amp; 生命周期 &amp;amp; 链接属性

概念解析 存储类 存储类就是存储类型,也就是描述C语言变量在何种地方存储. 内存有多种管理方法:栈.堆.数据段.bss段..text段······一个变量的存储类属性就是描述这个变量存储在何种内存段中. 譬如:局部变量分配在栈上,所以它的存储类就是栈:显式初始化为非0的全局变量分配在数据段,显式初始化为0和没有显示初始化(默认为0)的全局变量分配在bss段. 作用域 作用域是描述这个变量起作用的代码范围. 基本来说,C语言变量的作用域规则是代码块作用域.意思就是这个变量起作用的范围是当前的代码块

python 面向对象:类,作用域

类(Class)和实例(Instance) 定义类是通过class关键字:class Student(object): pass class后面紧接着是类名,即Student接着是(object),表示该类是从哪个类继承下来的 根据Student类创建出Student的实例,创建实例是通过类名+()实现的:>>> bart = Student() class Student(object): def __init__(self, name, score): self.name = nam

Python 类与作用域——一些测试

/* 一 */ >>> class T (): a = 0 b = a >>> T.b 0 >>> del T /* 二 */ >>> class T (): a = 0 b = T.a Traceback (most recent call last): File "<pyshell#9>", line 1, in <module> class T (): File "<p