社区
C++ 语言
帖子详情
类成员函数访问问题
Roy_Smiling
2011-08-28 08:40:27
类里面的成员函数被编译器编译后都是函数放在代码区里面。
那么怎么保证类的成员函数只能被该类的实例对象访问。而不能像通常的函数调用一样。
如:
class A
{
private:int a;
public: void put{ cout<<a<<endl;}
}
编译器编译后有一个函数:void put(A *this);
怎么保证这个函数只能被A类对象访问,而不能像通常的函数调用一样访问。(求编译器实现机制)
...全文
150
12
打赏
收藏
类成员函数访问问题
类里面的成员函数被编译器编译后都是函数放在代码区里面。 那么怎么保证类的成员函数只能被该类的实例对象访问。而不能像通常的函数调用一样。 如: class A { private:int a; public: void put{ cout<<a<<endl;} } 编译器编译后有一个函数:void put(A *this); 怎么保证这个函数只能被A类对象访问,而不能像通常的函数调用一样访问。(求编译器实现机制)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
tony2278
2011-08-29
打赏
举报
回复
编程跟学电路有什么关系?
没什么关系!
如果你是嵌入式软件,就可以了解一下硬件!
上位机软件根本不需要学电路!
iamnobody
2011-08-29
打赏
举报
回复
后面的是开玩笑的,学下汇编有好处不假
iamnobody
2011-08-29
打赏
举报
回复
如果你好奇的话,就会想这是怎么实现的,CPU,里面不就是电路吗?
Roy_Smiling
2011-08-29
打赏
举报
回复
[Quote=引用 8 楼 mingliang1212 的回复:]
我看你学得差不多的时候就学一下汇编吧,汇编不用学太好,能看懂就行,这样才能直接看反汇编,不用问人了,当然如果你还想再深入了解,学数字电路,还想深入学模拟电路,还要更底层就学电路吧。
[/Quote]
编程跟学电路有什么关系
iamnobody
2011-08-29
打赏
举报
回复
我看你学得差不多的时候就学一下汇编吧,汇编不用学太好,能看懂就行,这样才能直接看反汇编,不用问人了,当然如果你还想再深入了解,学数字电路,还想深入学模拟电路,还要更底层就学电路吧。
iamnobody
2011-08-29
打赏
举报
回复
[Quote=引用 6 楼 roy_smiling 的回复:]
引用 5 楼 luciferisnotsatan 的回复:
引用 2 楼 pengzhixi 的回复:
访问性是针对类的,不是针对对象的。你理解完全错误了。
++
而且访问限制是针对编译时的,编译后没有这种限制。只有内存访问权限。
我想知道编译器是怎么实现这种访问限制的?
[/Quote]
编译器实际上 类似这样翻译的
void A::put(A* this);
只要加上类名不就知道是属于谁的函数了吗?
Roy_Smiling
2011-08-28
打赏
举报
回复
[Quote=引用 5 楼 luciferisnotsatan 的回复:]
引用 2 楼 pengzhixi 的回复:
访问性是针对类的,不是针对对象的。你理解完全错误了。
++
而且访问限制是针对编译时的,编译后没有这种限制。只有内存访问权限。
[/Quote]
我想知道编译器是怎么实现这种访问限制的?
luciferisnotsatan
2011-08-28
打赏
举报
回复
[Quote=引用 2 楼 pengzhixi 的回复:]
访问性是针对类的,不是针对对象的。你理解完全错误了。
[/Quote]
++
而且访问限制是针对编译时的,编译后没有这种限制。只有内存访问权限。
grefen
2011-08-28
打赏
举报
回复
上面笔误,应该是cout<<a->a<<endl;
grefen
2011-08-28
打赏
举报
回复
A x;
x.put();
编译后大概应该是这样的:
A x;
put(&x);
另外成员函数一般内部差不多是这样的:
void put(A* a){ //这里的参数是编译器放的,就是传说中的this指针;
cout<<a.a<<endl;
}
pengzhixi
2011-08-28
打赏
举报
回复
访问性是针对类的,不是针对对象的。你理解完全错误了。
羽飞
2011-08-28
打赏
举报
回复
每次不都要传一个class A类型相关的参数吗
如果参数不对不是不能调用这个函数
类
成员函数
作为线程函数使用
类
成员函数
作为线程函数使用 C++
类
成员函数
使用时,都会隐式传递一个this指针给该函数,this指针指向该
类
的对象。函数体可以通过显示调用该指针或直接
访问
类
内成员。 回调函数是用指针来调用的函数,最常使用的回调函数就是在创建线程时,以一个函数指针以及传递给这个函数多个参数来调用线程函数来创建线程。那么一般的
类
成员函数
是不能用作回调函数的,因为库函数在使用回调函数时,都会传递指定的符合回调函数
C++
类
成员函数
的
访问
权限
C++
类
成员函数
的
访问
权限
类
成员函数
对main函数变量的
访问
权限
类
之间变量的重复定义
类
成员函数
对main函数变量的
访问
权限 main函数本质也是函数,
类
成员函数
只能
访问
全局变量和
类
中的变量,不能
访问
main函数里面的变量。
类
之间变量的重复定义 不同的
类
中变量是不相通的,所以不同
类
内可以定义相同变量名的变量。 ...
关于
类
成员函数
中
访问
同
类
对象的私有成员
关于
类
成员函数
中
访问
同
类
对象的私有成员,主要包含以下几种场景: a. 在C++的
类
的
成员函数
中,允许直接
访问
该
类
的对象的私有成员变量。 b. 在
类
的
成员函数
中可以
访问
同
类
型实例的私有变量。 c. 拷贝构造函数里,可以直接
访问
另外一个同
类
对象(引用)的私有成员。 d.
类
的
成员函数
可以直接
访问
作为其参数的同
类
型对象的私有成员。 举例描述上述知识: 1).在拷贝构造
C++
类
成员函数
可以
访问
所有
类
对象的私有数据
在学习C++ Primer Plus的过程中,遇到一个有趣的
问题
。 众所周知,
类
的私有变量是无法在
类
外直接
访问
的,只能通过
类
的
成员函数
访问
。 且看下面一段代码: class Stock { private: double total_val;//这是私有的哦~ public: Stock();//默认构造函数 Stock(const char* co, int n = 0, double pr = 0.0); ~Stock();//析构函数 const Stock& topval(
【C/C++笔记】之
类
成员函数
作为线程函数
首先,普通
类
成员函数
是不能够直接被当做线程的
成员函数
使用。因为
类
中定义的
成员函数
,编译器会给其加上this指针。 推荐一个论坛讨论过程:
成员函数
作为线程函数 静态
成员函数
: 把
成员函数
声明成static
类
型,去掉this指针。但是静态
成员函数
只能够
访问
静态成员变量。因此这种方式有一定的局限性。 友元函数: 把线程函数设置成
类
的友元函数,这样线性函数就能
访问
类
中的成员。 ...
C++ 语言
65,186
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章