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

C++this指针,静态成员函数

---- 1. this指针 在上篇讲C++,对象,封装,继承(派生),多态时候,this指针出现在成员函数中,并使用->成员提取符操作成员变量。...在 C++ 中,每一个对象都能通过 this 指针来访问自己地址,this 指针是所有成员函数隐含参数,实际上成员函数默认第一个参数为T* const register this,this指针在成员函数开始执行前构造...函数 所谓函数,就是在中,用friend关键字声明一个函数,这个函数声明在中,但不作为成员函数,虽然函数不属于成员函数,却可以访问成员,不论成员是public,pirvate...:在实现之间数据共享时,减少系统开销,提高效率,具体来说:为了使其他成员函数直接访问该类私有变量,同时也破坏了封装性,所以不到万不得已,还是不要用友函数。...因为是需要来共享数据,那么大多数情况,函数都是有参数, 因为函数没有this指针,则参数要有三种情况: 要访问非static成员时,需要对象做参数; 要访问static成员或全局变量时

1.4K10

C++面向对象,全局函数成员函数

在程序里,有些私有属性 也想让外特殊一些函数或者进行访问,就需要用到技术 目的就是让一个函数或者 访问另一个中私有成员 关键字为 ==friend== 三种实现 全局函数... 成员函数 全局函数 class Building { //告诉编译器 goodGay全局函数 是 Building好朋友,可以访问私有内容 friend void...<< endl; cout m_BedRoom << endl;//可以访问私有权限原因是设置了该类与要访问关系,要在被访问里写上 friend...告诉编译器 goodGay是Building好朋友,可以访问到Building中私有内容 可以设置之间访问权限 成员函数 class Building; class goodGay...private: Building *building; }; class Building { //告诉编译器 goodGayvisit成员函数 是Building好朋友,可以访问私有内容

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

C++ 语言】面向对象 ( 成员函数 | 常量函数 | 函数 | | 单例 )

文章目录 成员函数 常量函数 函数 new 创建对象 单例 成员函数 ---- 此处继续上一篇博客继续向后讲解C++面向对象 成员方法 , 除了定义构造方法与析构方法之外 ,...this->age; } 函数 ---- 外部访问私有成员变量 , 有两种方法 , 一种是使用共有的成员方法访问 , 另一种是在函数访问 ; 函数 , 在函数中 , 可以从外部访问私有成员变量...() 构造方法 age : 88 ~Student() 析构方法 ---- , 中所有的成员函数都是该类函数 , 可以访问该类对象私有成员变量 ; 声明 , 声明方法...friend class 名称; , 中所有的成员函数都是该类函数 ; Student.h 中友声明 //声明 , 可以在访问修改私有成员变量 //所有的成员函数都是函数...friend class Teacher; 定义与实现 , 中定义方法都是 Student 函数 , 其中需要传入 Student* 参数来访问 Student 对象私有成员变量

48820

C++函数使用

1.介绍 在C++中,(friend)是一种机制,允许某个函数访问其他私有成员。通过,可以授予其他函数对该类私有成员访问权限。...这样,在函数中可以直接访问该类私有成员函数可以是非成员函数,也可以是其他成员函数函数通常在声明部分或声明外部使用 friend 关键字来声明。...当某个需要提供特定函数或操作给其他使用,但这些函数需要访问私有成员时,可以使用函数。 在重载运算符或实现某些特定功能时,可以提供对私有成员直接访问。...在C++中,我们使用对数据进行了隐藏和封装,数据成员一般都定义为私有成员成员函数一般都定义为公有的,以此提供与外界通讯接口。...但是,有时需要定义一些函数,这些函数不是一部分,但又需要频繁地访问数据成员,这时可以将这些函数定义为该函数函数。除了函数外,还有,两者统称为

21830

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

定义格式、访问控制 C++里面定义关键词有两个,一个是class,另一个是struct,他们基本没有区别,除了成员变量默认属性。...,例如void xxx(); }; 在public修饰下可以在整个程序内被访问,private只能够在里面访问(上面的例子里private下只有成员变量,其实还可以有成员函数,如果是成员函数的话则只能被其他成员函数调用...x, int y) { xPos = x; yPos = y; } 在使用成员函数时候要记得加上名字,例如: point::setPoint(2, 3); friend,魔法...所以如果希望用户能够调用这个函数,那么就要在声明之外再专门对函数进行一次声明(通常这种声明就放在定义头文件里面)。被声明为函数可以访问内部private成员变量/函数。...当然,除了可以声明函数,还可以声明,这里就不举例子了。 可变数据成员 有时候我们会希望能够修改某个用const修饰过只读成员函数数据成员,例如,用来记录这个函数被调用了多少次。

46320

C++】从入门到精通第三弹——函数与静态成员

概述 是使用friend关键字, 让特定函数或者别的所有成员函数对私有数据成员进行读写。 好处是:可以保持数据私有性,又可以让特定或者函数直接访问私有成员。...为了提升效率,可以让普通函数直接访问一个保护或私有数据成员,但是如果没有机制,就只能将数据成员声明为公共,从而任何函数都可以无约束地访问它。...Clibrary,所以这个成员函数就不能访问访问Clibrary私有属性。...此外,全局函数也可以作为,一样可以访问私有成员。 最后简单来谈一下 函数访问对象中成员时,不需要通过对象名。...函数没有this指针,如果不通过对象名就无法找到对象中非static成员,也就无法访问。但是当访问对象中static成员时,就可以不用通过对象名访问

17510

C++ ( 简介 | 声明 | 单向性 | 继承性 | 作用 | 函数由来 | Java 反射机制 | C C++ 编译过程 )

一、简介 1、引入 在 C++ 语言中 , " " 是 一个 与 另外一个 特殊关系累 , 在 A " " B 中 , 可以直接访问 A 私有成员...和 保护成员 ; B 是 A 好朋友 , B 可以访问 A 所有成员 ; 2、声明 声明一个 B 是 另一个 A , 可以 在 A 中使用 friend 关键字来声明 ;...B 是 A ; B 中定义 A 类型成员变量 ; B 可以访问 A 中 所有成员 , 包括 私有成员保护成员 ; B 可以看做 A 数据操作辅助 ; 代码示例 : class..., 但是 A 不是 B , A 不能访问 B 私有和保护成员 ; 4、继承性 关系不具有继承性 , 即 子类不能直接继承父 ; 5、作用 主要作用 :...有些编程场景 , 需要破坏封装性 , 需要访问私有属性 ; Java 中给出方案是 反射机制 ; C++ 中给出方案是 函数 ; 2、Java 反射机制 Java 编译成

23110

C++】泛型编程 ⑬ ( 模板示例 - 数组模板 | 构造函数和析构函数 声明与实现 | 普通成员函数 声明与实现 | 外部函数 声明与实现 )

析构函数 : 在 模板 外部 访问 模板 中声明 函数 , 先显示声明 模板类型 template , 然后在下面使用 域作用符 访问 模板中 函数 , 域作用符...cout << " 调用析构函数 " << endl; } 3、普通成员函数 声明与实现 重载 数组下标 [] 操作符 , 使用 模板内部 成员函数即可完成 ; 普通成员函数 声明 : 数组下标...Array::operator[](int i) { return m_space[i]; } 4、外部函数 声明与实现 重载 左移 << 操作符 , 由于 左移操作符 做操作数是..., 模板内部定义 操作符重载函数 , 其 左操作数 必须是 本身 ; 外部函数 声明 : 声明时 , 需要在 函数名 和 参数列表之间 注明 泛型类型 ; 实现时 , 不能在 函数名...Array& a); } 外部函数 实现 : 在外部 实现 模板 函数 , 首先 , 还是注明 模板类型 , template ; 然后 , 在 函数参数 /

32010

【细品C++和对象一些细节(初始化列表、、static成员等)

date d; cin >> d; cout << d << endl; //两个操作符重载返回istream/ostream引用是为了能链式调用 return 0; } 运行截图: 说明: 函数访问私有和保护成员...函数不能用const修饰。 函数可以在定义任何地方声明,不受访问限定符限制。...一个函数可以是多个函数 函数调用与普通函数调用原理相同 所有成员函数都可以是另一个函数,都可以访问另一个非公有成员。...如上面代码date和Time,在Time中声明date为其,那么可以在date中直接访问Time私有成员,但无法在Time访问date私有成员。...外部类对内部类没有任何优越访问权限。 注意:内部类就是外部类,参见定义,内部类可以通过外部类对象来访问外部类中所有成员。但是外部类不是内部类

34920

那些你不知道和对象知识

静态成员也是成员public、protected、private 访问限定符限制 静态成员变量和静态成员函数主要用途包括: 对象计数器:可以使用静态成员变量来实现某个对象计数功能。...,不能访问私有成员保护成员,但是函数却可以,一个特殊存在,由于这样操作破坏了封装性,我们建议少使用友....小结: 函数访问私有(private)和保护(protect)成员,但函数不属于,不是成员函数....函数调用与普通函数调用原理相同 (2) 前面介绍了函数,那也可以是. 所有成员函数都可以是另一个函数,都可以访问另一个非公有成员。...则可以在Date中直接访问Time私有成员变量,但是在Time中是无法访问Date私有成员. 关系不能传递. 如果B是A,C是B,则不能说明C时A.就比如.

17320

C++】运算符重载 ⑧ ( 左移运算符重载 | 函数 成员函数 实现运算符重载 | 对象 使用 左移运算符 )

一、左移运算符重载 1、函数 / 成员函数 实现运算符重载 运算符重载 正规写法一般都是 使用 成员函数 形式 实现 ; 加法 + , 减法 - , 自增 ++ , 自减 - - , 一般都使用成员函数...实现 运算符重载 ; 上述 运算符重载 既可以使用 成员函数 进行重载 , 又可以使用友函数进行重载 ; 只能使用 成员函数 重载运算符 : = , [] , () , -> 等操作符 只能使用...成员函数 进行重载 ; 只能使用 函数 重载运算符 : 无法修改 左操作数 情况下 , 只能使用 全局函数 ( 需声明 函数 ) 进行重载 ; 2、对象 使用 左移运算符 平时使用 cout...: 首先 , 写出函数名 , cout << s1 左移操作符重载 , 函数名规则为 " operate " 后面跟上要重载运算符 , 函数名是 operate<< ; operate<< 然后 ,...// cout << s1 返回了 ostream& 类型引用 // 然后执行 ostream cout << endl cout << s1 << endl; // 控制台暂停 , 任意键继续向后执行

18010

C++基础知识精髓

C++中,结构可作为一种特殊,它虽然可以包含函数,但是它没有私有或保护成员C++中包含私有、公有和保护成员C++中可定义三种不同访控制权限成员。... 具备封装和信息隐藏特性。只有成员函数才能访问私有成员,程序中其他函数无法访问私有成员。...所有成员函数都是另一个函数,都可以访问另一个隐藏信息(包括私有成员保护成员)。 当希望一个可以存取另一个私有成员时,可以将该类声明为另一。...否则会破坏C++封装特性 * 基函数也不能被继承,只是能访问指定私有和保护成员自定义函数,不是被指定成员,自然不能继承 * 基与派生静态成员函数与静态成员是共用一段空间...,在外也不能访问 // protected保护继承 特点是基所有公有成员保护成员都成为派生保护成员,并且只能被它派生成员函数访问,基私有成员仍然是私有的 // private私有继承

2K50

C++函数

C++ 中,一个中可以有 public、protected、private 三种属性成员,通过对象可以访问 public 成员,只有本类中函数可以访问本类 private 成员。...现在,我们来介绍一种例外情况——(friend)。 借助(friend),可以使得其他成员函数以及全局范围内函数访问当前 private 成员。...在 C++ 中,这种友好关系可以用 friend 关键字指明,中文多译为“”,借助可以访问与其有好友关系私有成员。...如果你对“”这个名词不习惯,可以原文 friend 理解为朋友。 函数 在当前以外定义、不属于当前函数也可以在中声明,但要在前面加 friend 关键字,这样就构成了函数。...函数可以是不属于任何成员函数,也可以是其他成员函数函数可以访问当前所有成员,包括 public、protected、private 属性

14950

C++和对象】探索static成员以及内部类

a; 静态成员也是成员public、protected、private 访问限定符限制 1.3原因 静态成员变量是属于而不是实例成员变量。...2.(friend) (friend)是C++一个特殊关键字,用于在中声明其他函数函数可以访问声明它为私有成员保护成员。...该函数可以访问声明它为私有成员保护成员函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明,声明时需要加friend关键字。.../ 可以访问A私有成员保护成员 } 例如之前写过流输入输出重载就使用了函数,以此来访问私有成员; 注意: 函数访问私有和保护成员,但不是成员函数 函数不能用const修饰...可以访问声明它为所有私有成员保护成员

10010

c++和对象(七)

关键字,中只是声明 静态成员即可用 名::静态成员 或者 对象.静态成员访问 静态成员函数没有隐藏this指针,不能访问任何非静态成员 静态成员也是成员public、protected...、private 访问限定符限制 2. (Friend)在C++中是一个重要概念,它允许某些特定外部函数访问另一个私有(private)或保护(protected)成员 2.1...: _year(year) , _month(month) , _day(day) {} private: int _year; int _month; int _day; }; 特点: 函数访问私有和保护成员...,但不是成员函数 函数不能用const修饰 函数可以在定义任何地方声明,不受访问限定符限制 一个函数可以是多个函数 函数调用与普通函数调用原理相同 2.3 所有成员函数都可以是另一个函数...外部类对内部类没有任何优越访问权限 内部类就是外部类,参见定义,内部类可以通过外部类对象参数来访问外部类中所有成员

6320

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

一、函数简介 在 C++ 语言中 , " 函数 " 是 与 相关联函数 , " 函数 " 不是成员函数 , 但是可以访问 private 私有成员 和 protected 保护成员...; 函数可以是 全局函数 本类成员函数 其他成员函数 函数 朋友 , 在 函数 中 , 可以修改 对象 中 私有属性 和 保护属性 ; 函数 破坏了 封装性...函数 函数名 ; arguments : 是 函数 参数列表 ; 2、函数声明不受访问控制限制 " 函数 " 声明 , 不受访问控制限制 , 可以在任何地方定义 , 如...访问 成员 ; 3、函数参数要求 " 函数 " 中 , 需要有一个参数是 对象 指针 ; 如下 Student 函数 , 需要有一个参数是 Student 对象指针 , 可以访问对象..., 可以访问对象中私有成员 ; // 在函数访问 age 私有属性 void changeAge(Student* s, int age) { s->age = age; } 三、完整代码示例

26620

CC++面试题之语言基础篇(一)

protected:保护继承,派生继承基保护成员,这些成员在派生中变为保护或私有的。...private:私有继承,派生继承基私有成员,这些成员在派生中变为私有的,不能被外部访问。 C语言和C++区别 与C语言区别: C语言是面对过程,而C++是面对对象。...保护成员(protected):子类可以访问保护成员变量和函数。 私有成员(private):子类不能访问私有成员变量和函数。...构造函数和析构函数:如果基构造函数和析构函数是公有的,子类可以直接访问它们;如果基构造函数和析构函数保护或私有的,子类仍然可以访问它们,但只能在子类构造函数和析构函数内部调用它们,不能在外部使用...c++中A访问B私有成员解决方法 使用友函数:B中声明A,或者在A中声明B 提供公有成员函数或接口:如果希望B私有成员被A间接访问,可以在B中提供一些公有成员函数或接口

15710
领券