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

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

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

1.4K10

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

生活家有客厅(Public),有你卧室(Private) 客厅所有来客人都可以进去,但是你卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你好闺蜜好基进去。...在程序里,有些私有属性 也想让外特殊一些函数或者进行访问,就需要用到技术 目的就是让一个函数或者 访问另一个私有成员 关键字为 ==friend== 三种实现 全局函数... 成员函数 全局函数 class Building { //告诉编译器 goodGay全局函数 是 Building好朋友,可以访问私有内容 friend void...告诉编译器 goodGay是Building好朋友,可以访问到Building私有内容 可以设置之间访问权限 成员函数 class Building; class goodGay...private: Building *building; }; class Building { //告诉编译器 goodGayvisit成员函数 是Building好朋友,可以访问私有内容

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

C++函数使用

1.介绍 在C++(friend)是一种机制,允许某个函数访问其他私有成员。通过,可以授予其他函数对该类私有成员访问权限。...这样,在函数可以直接访问该类私有成员函数可以是非成员函数,也可以是其他成员函数函数通常在声明部分或声明外部使用 friend 关键字来声明。...当某个需要提供特定函数或操作给其他使用,但这些函数需要访问私有成员时,可以使用函数。 在重载运算符或实现某些特定功能时,可以提供对私有成员直接访问。...在C++,我们使用对数据进行了隐藏和封装,数据成员一般都定义为私有成员成员函数一般都定义为公有的,以此提供与外界通讯接口。...示例2: 分别定义一个A和B ,各有一个私有整数成员变量通过构造函数初始化A有一个成员函数Show(B &b)用来打印A和B私有成员变量,请分别通过函数来实现此功能。

23230

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

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

49220

C++成员函数 | 成员函数

C++成员函数性质 在C++成员函数函数一种,它有返回值和函数类型,它与一般函数区别只是:  属于一个成员,出现在。...C++使用函数时,要注意调用它权限以及它作用域,私有成员函数只能被本类其他成员函数所调用,而不能被外调用,成员函数可以访问本类任何成员,可以引用在本作用域中有效数据。 ...在C++,有的函数并不是准备为外界调用,而是为本类成员函数所调用,就应该将它们指定为 private。...这种函数作用是支持其他函数操作,是其他成员函数外用户不能调用这些私有函数。  成员函数十分重要部分。...C++外定义成员函数 上述所讲成员函数是在定义,在C++也可以在只写成员函数声明,而在外面进行函数定义。

1.8K74

C++

前面提到过,在封装私有成员变量和成员函数无法在外访问,但是总有那么一些情况需要给对象赋予一定访问权限。...比如在家里面,客厅是公共访问权限,而每个人卧室是私有访问权限,对大多数人来说不可访问,但是自己好朋友可以。同样道理,在C++实现这种功能需要借助机制。...简单来说就是如果某个对象需要访问私有成员,在内声明为类型即可。...一、全局函数 在本例,首先构造了一个 house ,需要在内声明全局函数 Friend 为方能访问私有成员: class house { friend void Friend(house...其实函数一样,如下例所示: class house{ // 将 friend_house 声明为house后,该类实例化对象能够访问 house 对象所有成员 friend

24700

关于C++friend函数总结

参考链接: C++朋友函数和朋友 1.函数简单介绍  1.1为什么要使用函数  在实现之间数据共享时,减少系统开销,提高效率。...如果类A函数要访问B成员(例如:智能指针实现),那么A函数要是B函数。 具体来说:为了使其他成员函数直接访问该类私有变量。...Y一个成员函数X函数  目的:使Y一个成员函数成为X,具体而言:在Y这个成员函数,借助参数X,可以直接以X私有变量  语法:  声明位置:声明在公有 (本身为函数) ...注意:  1.通过使用关键字friend 来修饰函数,但该函数并不是成员函数,其声明可以放在私有部分,也可放在共有部分。函数定义在体外实现,不需要加限定。 ...2.一个成员函数可以是另外一个函数,而且一个函数可以是多个函数。  3.函数可以访问私有成员和其他数据,但是访问不可直接使用数据成员,需要通过对对象进行引用。

79730

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

概述 使用friend关键字, 让特定函数或者别的所有成员函数私有数据成员进行读写。 好处是:可以保持数据私有性,又可以让特定或者函数直接访问私有成员。...,使用了friend关键字将Clist定义为Cltem ,这样一来,Clist所有方法都可以访问Cltem私有成员了。...比如,我们需要实现只允许Cbook某个成员来访问·Clibrary私有成员,而不允许其他成员函数访问Clibrary私有数据,这可以通过定义函数来实现。...Clibrary,所以这个成员函数就不能访问去访问Clibrary私有属性。...此外,全局函数也可以作为,一样可以访问私有成员。 最后简单来谈一下 函数在访问对象成员时,不需要通过对象名。

18910

c++数据成员初始化次序

分享一个之前学知识点,感觉还挺重要,就是当一个某个数据成员同时拥有就地初始化、构造函数初始化列表和构造函数函数体里赋值,那么它会先执行哪个?最后生效又是哪个呢?...根据老师讲解,数据成员初始化次序依次为: 就地初始化 > 构造函数初始化列表 >构造函数赋值(严格意义上不能成为初始化) 而当三种初始化方式都有时,构造函函数体里赋值肯定执行,并且生效...,但是就地初始化和构造函数初始化列表执行情况是怎样呢?...所以当一个数据成员同时拥有就地初始化初始化列表时,它会忽略就地初始化而执行构造函数初始化列表。...如果到代码有参构造函数函数体中加上 this->id = 20; ,运行结果会变为: 0 n = 1,id = 1 n = 1,id = 20 可以看到赋值把初始化列表给id初始化值覆盖掉了

80220

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

但是实际上我们正常使用cout是左操作数,也就是需要作为重载函数第一个形参,所以需要重载成全局函数,但是这又会导致外没办法访问成员,此时就需要来解决。operator>>同理。...return 0; } 运行截图: 而函数可以直接访问私有成员,它是定义在外部普通函数,不属于任何,但需要在内部声明,声明式需要加friend关键字。...一个函数可以是多个函数 函数调用与普通函数调用原理相同 所有成员函数都可以是另一个函数,都可以访问另一个非公有成员。...如上面代码date和Time,在Time声明date为其,那么可以在date中直接访问Time私有成员,但无法在Time访问date私有成员。...外部类对内部类没有任何优越访问权限。 注意:内部类就是外部类,参见定义,内部类可以通过外部类对象来访问外部类所有成员。但是外部类不是内部类

38020

C++:30 ---C++成员成员函数内存布局

,C++语法不允许获取构造函数和析构函数地址,要分析其地址,只能查看生产汇编代码了。...:" << std::hex << std::showbase << ut.addr << endl; ut.f = &Demo::F2; cout << "成员函数F2()地址是 :...这里要指出是大家可以看到静态成员函数和静态成员变量sx地址都是0x00007FF开头,实际上他们都在全局数据区域存储(全局变量,静态变量),如果你有耐心,可以断点查看下栈空间内局部变量i地址:...:F2; cout << "成员函数F2()地址是 :" << std::hex << std::showbase << ut.addr << endl; cout << "虚函数入口地址...我想你现在根据刚才打印成员变量,成员函数,虚函数表地址已经可以自己画出成员内存布局了。

1.2K20

C++C++ this 指针用法 ② ( 常量成员函数 | const 修饰成员函数分析 )

一、常量成员函数 1、const 修饰成员函数分析 在 C++ , 普通非静态成员函数 , 可以使用 const 进行修饰 , 在 下面的 Student , 定义了 void fun(int...在 * 右边修饰是指针本身 ; 代码示例 : class Student { public: // 使用 const 修饰 成员函数 // const 关键字可以 // 在 void...使用 const 关键字 修饰成员函数 , 会将 成员函数 转化为 " 常量成员函数 " ; " 常量成员函数 " 操作限制 : 不能修改成员变量 : 不能修改 任何 成员变量 值 , 静态成员变量...; // 身高 如果 成员函数 被 const 关键字 声明为 常量成员函数 , 则在该函数 不能修改 对象 任何成员变量 ; class Student { public: void fun..." << endl; } ~Student() { cout << "执行 Student 析构函数" << endl; } // 使用 const 修饰 成员函数 // const

18020

_成员函数可以访问本类对象私有成员

成员函数可以访问本类对象私有成员 sList是一个 私有成员是head,有一个成员函数形参是本类对象(引用,引不引用不影响结论和原因) ==为什么呢!...head明明是b私有成员,为什么可以被访问了!!??== 因为!...对象b是sList,而这个intersection函数是sList成员函数 head虽然是sList对象私有成员,但是是在sList内访问 ==就是 在内访问了本类(实例化对象)私有成员...本来就是成员,只是抽象和实例化问题 这非常合理地体现了 封装性 这个就是不行,在外访问了 这一点是非常好用,可以利用这一点 ==用成员函数肆无忌惮地访问对象私有成员!...==只要声明函数成员函数,将外部同类对象设为形参(或加个引用)就可以了!! 不必再为如何访问到同类外部对象私有成员而苦思了!

82430

C++静态数据成员和静态成员函数

定义时候非静态数据成员是不分配内存,只有在创建对象时候才分配内存,但静态数据成员是要分配内存,因为它是属于,只有一块内存,所以要初始化它,而且不能在声明初始化,必须要在初始化...静态数据成员访问受访问权限控制。如果定义为私有,则可以在内访问到。...静态成员函数 一般都是在静态成员函数修改静态数据成员,在刚刚手机声明成员函数: static void change(); 就是静态成员函数。...首先,可能你在做题时候,题目要求你使用静态成员函数完成任务…… 开个玩笑啦…… 静态成员函数没有this指针,因为它在创建时候就存在了,在没有创建对象时候就已经存在静态成员函数,而普通函数必须在对象被创建时候才能被使用...简而言之,静态成员函数是服务于,而不是某个对象,它方便在于不需要定义对象就能使用

14930

c++对象和关系_对象只能访问该类私有成员

任何公有成员可以被外部访问。...所有成员,任何代码均可访问该项,访问权限最大也就意味着最不安全 Private访问修饰符:范围:私有的,只有内部可以进行访问,允许一个将其成员变量和成员函数对其他函数和对象进行隐藏。...只有同一个函数可以访问它私有成员。即使是实例也不能访问它私有成员。...访问权限最小意味着针对于对象自己而言最安全; Protected访问修饰符:范围:受保护以及子类可以进行访问,允许子类访问它成员变量和成员函数。这样有助于实现继承。...和内嵌成员,只有派生可以访问该项; Internal访问修饰符:范围:内部,默认,程序集内部可以访问,允许一个将其成员变量和成员函数暴露给当前程序其他函数和对象。

1.6K10

(转载非原创)C++

/zhaozhibo/p/14971820.html 前面提到过,在封装私有成员变量和成员函数无法在外访问,但是总有那么一些情况需要给对象赋予一定访问权限。...比如在家里面,客厅是公共访问权限,而每个人卧室是私有访问权限,对大多数人来说不可访问,但是自己好朋友可以。同样道理,在C++实现这种功能需要借助机制。...简单来说就是如果某个对象需要访问私有成员,在内声明为类型即可。...一、全局函数 在本例,首先构造了一个 house ,需要在内声明全局函数 Friend 为方能访问私有成员: class house { friend void Friend(house...其实函数一样,如下例所示: class house{ // 将 friend_house 声明为house后,该类实例化对象能够访问 house 对象所有成员 friend

33250

C++:49---继承

一、在继承关系 我们在文章中介绍过,关系不能继承。 (1)关系不存在传递性,即每个负责控制自己或者函数; (2)关系是单向,不具有交换性。...若B是AA不一定是B,要看在是否有相应声明。 (3)关系不能被继承。...因此: 基不能访问派生成员,但是仍可以访问派生从基继承而来成员/方法 派生也不能随意访问基成员 二、演示案例 class A { private: int a; friend...,可以访问其任何成员 int f2(B b) { return b.a; }; //正确,因为B继承了A,所以B也包含了Aa int f3(B b) { return b.b; }; //错误,C不是...B,不能访问其私有成员 };

39230
领券