首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

静态成员函数访问非静态数据成员【C++

然而,静态成员函数不属于对象,无this指针。所以静态成员函数不能访问类的默认非静态成员(非静态成员函数和非静态数据成员)。...举例说明一种静态成员函数访问非静态数据成员的方式: #include using namespace std; class Point { public: Point(int...参数表中创建对象 cout << "x=" << m.x << endl; //静态成员<em>函数</em>通过对象<em>访问</em>非静态数据成员 cout << "y=" << y << endl;...只要对静态数据成员的值更新一次,就可以保证所有对象都会存取更新后的值 由本例可知:静态成员<em>函数</em>不能引用本类非静态成员并非绝对,只是不可以进行默认的<em>访问</em>,因为编译器不知道应该去寻找哪一个对象。...若必须要<em>访问</em>,则有两种方式,且一般使用第二种居多。 对象名 . 非静态成员 ; 类名 :: 非静态成员 ; 故:实例化对象即可完成对非静态数据成员的<em>访问</em>

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

C++】静态成员函数 ( 静态成员函数概念 | 静态成员函数声明 | 静态成员函数访问 | 静态成员函数只能访问静态成员 )

一、静态成员函数简介 1、静态成员函数概念 静态成员函数归属 : 在 C++ 类中 , 静态成员函数 是一种 特殊的函数 , 该函数属于类 , 而不是属于 类实例对象 ; 静态成员函数调用不依赖于对象...public: static void fun() { cout << "静态成员函数被调用 : number = " << number << endl; } }; 3、静态成员函数访问 静态成员函数访问...: 使用 类名 和 域操作符 访问 : // 通过 类名:: 调用 静态成员函数 Student::fun(); 使用 对象 访问 : // 通过 对象....调用 静态成员函数 s.fun(); 4、静态成员函数只能访问静态成员 静态成员函数内容要求 : 静态成员函数 只能访问 静态成员变量 其他静态成员函数 静态成员函数 不能访问 非静态成员变量 非静态成员函数..., 普通的 成员变量 和 成员函数 , 需要 通过 类 的 实例对象 来访问 , 需要 依托于 对象才能存在 , 而 静态成员函数 可以在 不创建 实例对象的前提下被调用 , 因此 静态成员函数中 不能访问

36620

C++】STL 容器 - vector 动态数组容器 ⑤ ( vector 容器元素访问 | at 函数 | [] 运算符重载 函数 | vector 容器首尾元素访问 )

文章目录 一、 vector 容器元素访问 1、vector 容器访问指定索引的元素 - at 函数 2、vector 容器访问指定索引的元素 - [] 运算符重载 函数 二、 vector 容器首尾元素访问...1、vector 容器首尾元素访问函数 2、代码示例 - vector 容器首尾元素访问 一、 vector 容器元素访问 1、vector 容器访问指定索引的元素 - at 函数 vector 容器访问指定索引的元素..., 可以使用 at() 函数 和 [] 操作符 ; vector 类的 at 函数 , 可以访问指定索引位置的元素 , 函数原型如下 : const_reference at(size_type pos...- [] 运算符重载 函数 vector 容器可以使用 [] 运算符访问其元素 , 调用的是 [] 运算符重载 函数 , 函数原型如下 : reference operator[](size_type...1、vector 容器首尾元素访问函数 vector 容器首尾元素访问函数 : 访问 vector 容器首元素 : vector 容器类的 front() 成员函数返回一个常量引用 , 表示容器中的第一个元素

15010

C++笔记——类(0)定义、访问控制、友元、default、mutable、构造函数

定义格式、访问控制 C++里面定义类的关键词有两个,一个是class,另一个是struct,他们基本没有区别,除了成员变量的默认属性。...,例如void xxx(); }; 在public修饰下的可以在整个程序内被访问,private只能够在类里面访问(上面的例子里private下只有成员变量,其实还可以有成员函数,如果是成员函数的话则只能被类里的其他成员函数调用...用访问说明符的目的就是封装,通过public和private的区分,我们可以将具体实现、数据放在private中禁止用户访问,强制让用户去使用public中定义好了的对外开放的接口。...所以如果希望用户能够调用这个函数,那么就要在友元声明之外再专门对函数进行一次声明(通常这种声明就放在定义类的头文件里面)。被声明为友元的函数可以访问类内部的private成员变量/函数。...参考 C++ 类的定义与实现 C++ 类 & 对象 C++类的介绍 《C++ Primer》

47720

C++C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量 “ 的引用指针 | 函数内的 “ 局部变量 “ 的引用指针做函数返回值无意义 )

一、函数返回值不能是 " 局部变量 " 的引用指针 1、引用通常做右值 之前使用 引用 时 , 都是作为 右值 使用 , 引用只在 声明 的 同时 进行初始化时 , 才作为左值 , // 定义变量 a...函数 的 返回值 几乎很少是 引用 指针 ; 函数 的 计算结果 经常是借用 参数中的 地址 / 引用 进行返回的 , 函数 的 返回值 一般返回一个 int 类型的值 , 如果 int 为 0...就是成功 , int 为其它数值 , 就是错误码 ; 3、函数内的 " 局部变量 " 的引用指针做函数返回值无意义 如果 想要 使用 引用 指针 作 函数的计算结果 , 一般都是将 引用 和 指针...的指针 ; 上述两个函数是无意义的 , 获取到 函数 返回的 " 局部变量 " 的 引用 指针 , 然后获取地址 , 发现获取的都是随机值 , 都是无意义的值 ; num21 = -858993460..., *num3 = -858993460 代码示例 : // 包含 C++ 头文件 #include "iostream" // 使用 std 标准命名空间 // 该命名空间中 , 定义了很多标准定义

34120

C++核心准则C.127:包含虚函数的类应该有虚析构函数保护析构函数

C.127: A class with a virtual function should have a virtual or protected destructor C.127:包含虚函数的类应该有虚析构函数保护析构函数‍...包含虚函数的类通常(大多数情况下)通过指向基类的指针使用。通常,最后一个使用者必须通过指向基类的指针调用delete操作,通常是指向基类的智能指针,因此析构函数应该是公开的虚函数。...稍微特殊一些的情况是:如果不希望支持通过指向基类的指针销毁对象,析构函数应该是保护的非虚函数。参见C.35。...包含虚函数的类的析构函数要么是公开的虚函数,要么是保护的非虚函数。...提示针对包含虚函数却没有虚析构函数的类的销毁操作。

75420

C++】友元函数 ( 友元函数简介 | 友元函数声明 | 友元函数语法 | 友元函数声明不受访问控制限制 | 友元函数参数要求 )

一、友元函数简介 在 C++ 语言中 , " 友元函数 " 是 与 类 相关联的函数 , " 友元函数 " 不是类的成员函数 , 但是可以访问类的 private 私有成员 和 protected 保护成员...友元函数函数名 ; arguments : 是 友元函数 的 参数列表 ; 2、友元函数声明不受访问控制限制 " 友元函数 " 的 声明 , 不受类的访问控制限制 , 可以在任何地方定义 , 如...访问 类中的成员 ; 3、友元函数参数要求 " 友元函数 " 中 , 需要有一个参数是 类对象的 指针 ; 如下 Student 类的友元函数 , 需要有一个参数是 Student 类对象指针 , 可以访问对象...: // 声明友元函数 friend void changeAge(Student* s, int age); 即使使用了 private 限定友元函数 , 在类的外部也能访问函数 ; 在类的外部定义上述友元函数..., 可以访问类对象中的私有成员 ; // 在友元函数访问 age 私有属性 void changeAge(Student* s, int age) { s->age = age; } 三、完整代码示例

64020

C++】继承 ④ ( 继承对访问控制权限的影响 | 访问权限判定 | 继承不包括构造与析构函数 | 继承改变成员访问权限 )

一、继承相关概念 1、继承不包括构造与析构函数 子类 继承 父类 的 所有成员 , 包括 成员变量 和 成员方法 ; 子类 不会 继承 父类 的 构造函数 和 析构函数 ; 2、继承改变成员访问权限 父类...private : 私有成员 只能被该类的成员函数访问 , 包括友元函数和派生类中的覆盖函数 ; 完全封闭 : 在 类的外部 和 子类 中都不能访问私有成员 ; private 是最安全的访问控制级别...---- 1、访问权限判定 C++ 的 继承方式 对 子类的 成员变量 和 成员方法 会造成影响 , 成员的访问属性 需要看根据下面的逻辑进行判定 : 调用位置 : 看是在哪调用的 , 在 类内部 ,...保护成员 : protected 私有成员 : private 2、公有继承 公有继承 : 使用 public 关键字继承 ; // 子类 公有继承 父类 class Child : public Parent...private 成员 仍然是 private 成员 ; 3、保护继承 保护继承 : 使用 protected 关键字继承 ; // 子类 保护继承 父类 class Child : protected Parent

21310

C++有默认参数的函数 | 求2个3个中的最大数

C++有默认参数的函数函数调用时形参从实参获取值,因为实参的个数要和形参相同,但有时需要多次调用同一函数,因此C++提供了一个简单的处理办法,给形参一个默认值。...这样形参就不必一定要从实参取值了,如下函数声明: int Area(int area=10); 指定area的默认值为10,如果在调用此函数时,确认area的值为10,则可以不必给出实参的值,如: Area...经典案例:C++求2个3个正整数中的最大数,要求使用默认参数。...#include//头文件  using namespace std;//命名空间  int main() //主函数  {   int Max(int num1,int num2,...C++求2个3个中的最大数 更多案例可以go公众号:C语言入门到精通

1.3K2828

C++进阶学习】第二弹——继承(下)——挖掘继承深处的奥秘

然而,当子类中出现和父类同名的成员变量成员函数时,会发生一种特殊的现象,即隐藏。...// 此处的析构函数会自动调用 Parent 的析构函数 }; 需要注意的是,如果我们提供了任何一个构造函数析构函数,那么 C++ 编译器就不会再为我们提供默认的构造函数析构函数了。...这时如果我们需要使用默认的构造函数析构函数,需要我们自己显式地提供。...下面是一些相关知识点: 1、友元函数不能是成员函数:友元函数不是类的成员函数,因此不能使用this指针,也不能直接访问类的私有成员。需要通过类的对象引用来访问私有成员。...四、继承与静态成员 在 C++ 中,类可以包含静态成员变量和静态成员函数,其中静态成员变量属于类本身,而不是类的某个对象,因此它们可以在不创建类对象的情况下被访问

10810

谷歌统一权限系统Zanzibar

介绍 Zanzibar 是一个用于存储和评估访问控制列表的全球系统。...Zanzibar 提供统一的数据模型和配置语言,用于表达来自 Google 数百个客户端服务的广泛访问控制策略,包括Calendar、Cloud、 Drive、Maps、Photos、YouTube。...Flexible 支持丰富的访问控制策略 Scalable 数以万亿计的 ACL 条目,百万check qps Fast 95%请求小于10ms,99.9%请求小于100ms Available...模型 2.1 Relation Tuples ACL 表示为关系元组的对象-用户对象-对象关系的集合。组只是具有成员资格语义的 ACL。...主键的排序允许我们查找给定对象 ID (对象 ID,关系)对的所有关系元组。 我们的客户端根据其数据模式配置命名空间的分片。通常,分片 ID 仅由对象 ID 确定。

2.4K50

23.C++- 继承的多种方式、显示调用父类构造函数、父子之间的同名函数、virtual虚函数  上章链接: 22.C++- 继承与组合,protected访问级别

注意: protected继承只针对子类有效 比如当父类是protected继承时,则子类的子类就无法访问父类的所有成员 一般而言,C++项目只用到public继承 显示调用父类构造函数 当我们创建子类对象时...子类可以定义父类中的同名成员和同名函数 子类中的成员变量和函数将会隐藏父类的同名成员变量和函数 父类中的同名成员变量和函数依然存在子类中 通过作用域分辨符(::)才可以访问父类中的同名成员变量和函数...示例2,通过static_cast转换: Child c; Parent* p3=&c; Child *c2 = (static_cast*)(p3); 虚函数 实现多态性,通过指向子类的父类指针引用...,可以访问子类中同名覆盖成员函数 首先参考下面,没有虚函数的示例: class Parent { int i; public: void example()...所以C++引入了虚函数概念,根据指针指向的对象类型,来执行不同类的同名覆盖成员函数,实现不同的形态 定义: 在父类成员函数的返回值前面,通过virtual关键字声明,这样便能访问子类中的同名成员函数

3.1K90
领券