网站友情链接要加什么,高端响应式网站建设,东阳市住房和城乡建设局网站,网站首页设计注意文章目录 #x1f4da;标识符的作用域与可见性#x1f407;作用域#x1f407;可见性 #x1f4da;对象的生存期#x1f407;静态生存期#x1f407;动态生存期 #x1f4da;类的静态成员#x1f407;静态数据成员#x1f407;静态函数成员 #x1f4da;类的友元标识符的作用域与可见性作用域可见性 对象的生存期静态生存期动态生存期 类的静态成员静态数据成员静态函数成员 类的友元共享数据的保护 标识符的作用域与可见性
作用域
作用域是一个标识符在程序正文中有效的区域。⭐️函数原型作用域 是C程序中最小的作用域。在函数原型声明时形参的作用范围就是函数原型的作用域。double area (double radius) //标识符radius的作用在area形参列表的左右括号之间。 ⭐️局部作用域 函数形参列表中形参的作用域从形参列表中的声明处开始到整个函数体结束之处为止函数体内声明的变量其作用域从声明处开始一直到声明所在的块结束的大括号为止具有局部作用域的变量也称为局部变量。 ⭐️类作用域 类可以被看成是一组有名成员的集合类X的成员m具有类作用域对m的访问方式有三种 如果X的成员函数中没有声明同名的局部作用域标识符那么在该函数内可直接访问成员m通过表达式 x.m或X::m。这是程序中访问对象成员的最基本方法通过 ptr-m这样的表达式其中ptr为指向X类的一个对象的指针。 ⭐️命名空间作用域具有命名空间作用域的变量也称全局变量。
可见性
程序运行到某一点能够引用到的标识符就是该处可见的标识符。可见性规则 声明在前使用在后。同一作用域中不能声明同名的标识符。在没有互相包含关系的不同作用域中声明的同名标识符互不影响。在两个或多个具有包含关系的作用域中声明同名标识符则外层标识符在内层不可见。
对象的生存期
静态生存期
如果对象的生存期与程序运行期相同则称它具有静态生存期。 在命名空间作用域中声明的对象都具有静态生存期。如果要在函数内部作用域中声明具有静态生存期的对象要用关键字static。局部作用域中静态变量特点不会随着每次函数调用而产生一个副本也不会随着函数返回而失效。
动态生存期
除了上述两种情况其余对象都具有动态生存期。在局部作用域中声明具有动态生存期的对象也称局部生存期对象。局部生存期对象诞生于声明点结束于声明所在的块执行完毕之时。
类的静态成员
类的静态成员用来解决一个类的不同对象之间数据和函数共享问题。
静态数据成员
若某个属性为整个类所共有不属于任何一个具体对象则采用static关键字来声明为静态成员。类属性是描述类的所有对象共同特征的一个数据项对于任何对象实例它的属性值是相同的。静态数据成员具有静态生存期。由于静态数据成员不属于任何一个对象因此可通过类名对它进行访问类名::标识符。之所以类的静态数据成员需要在类定义之外再加定义是因为需要以这种方式专门为它们分配空间。非静态数据成员无须以此方式定义因为它们的空间是与它们所属对象的空间同时分配的。
静态函数成员
使用static关键字声明的函数成员。静态函数成员可以通过类名或对象名来调用而非静态成员函数只能通过对象名来调用一般习惯于通过类名调用。即使通过对象名调用起作用的也只是对象的类型信息与使用的具体对象无关。静态成员函数可以直接访问该类的静态数据和函数成员。而访问非静态成员必须通过对象名。
类的友元
友元关系提供了不同类或对象的成员函数之间、类的成员函数与一般函数之间进行数据共享的机制。在一个类中可以利用关键字friend将其他函数或类声明为友元。如果友元是一般函数或类的成员函数称为友元函数如果友元是一个类则称为友元类友元类的所有成员函数都自动成为友元函数。友元函数 是在类中用关键字friend修饰的非成员函数。虽然不是本类的成员函数但是在它的函数体中可以通过对象名访问类的私有和保护成员。 友元类 若A类为B类的友元类则A类的所有成员函数都是B类的友元函数都可以访问B类的私有和保护成员。 ⚠️注意 友元关系不能传递友元关系是单向的友元关系不被继承
共享数据的保护
常对象 它的数据成员值在对象的整个生存期内不能被改变。即常对象必须进行初始化而且不能被更新。声明常对象 const 类型说明符 对象名 用const修饰的类成员 ⭐️常成员函数类型说明符 函数名 参数表const const是函数类型的一个组成部分因此在函数的定义部分也要带const关键字。如果将一个对象说明为常对象则通过该常对象只能调用它的常成员函数而不能调用其他函数。无论是否通过常对象调用常成员函数在常成员函数调用期间目的对象都被视为常对象因此常成员函数不能更新目的对象的数据成员也不能针对目的对象调用该类中没有用const修饰的成员函数。 ⭐️常数据成员构造函数对该数据成员进行初始化就只能通过初始化列表。⭐️常引用 在声明引用时用const修饰常引用所引用的对象不能被更新。const 类型说明符 引用名非const的引用只能绑定到普通对象但常引用可以绑定到非常对象无论绑定哪一种引用后只能把对象当常对象。