社区
C++ 语言
帖子详情
比较特殊的运算符重载
caddor
2012-01-30 05:58:34
比较特殊的运算符重载:
class Sample
{
int *p;
public:
operator int*()
{
return p;
}
};
重载了int* , 这种函数感觉很怪异, 函数返回值,函数名是什么??
operator int*() const
{
return p;
}
它的 函数返回值,函数名是什么??
...全文
132
8
打赏
收藏
比较特殊的运算符重载
比较特殊的运算符重载: class Sample { int *p; public: operator int*() { return p; } }; 重载了int* , 这种函数感觉很怪异, 函数返回值,函数名是什么?? operator int*() const { return p; } 它的 函数返回值,函数名是什么??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
caddor
2012-01-30
打赏
举报
回复
多谢了
[Quote=引用 7 楼 we_sky2008 的回复:]
引用 5 楼 caddor 的回复:
前辈,在请教个问题,我对这个问题,查了一些资料,都没有彻底理解
void f2() {....}
以下都是对的:
(&f2)();
(*f2)();
(****************************f2)();
(****************************&f2)(……
[/Quote]
we_sky2008
2012-01-30
打赏
举报
回复
[Quote=引用 5 楼 caddor 的回复:]
前辈,在请教个问题,我对这个问题,查了一些资料,都没有彻底理解
void f2() {....}
以下都是对的:
(&f2)();
(*f2)();
(****************************f2)();
(****************************&f2)();
(&*f2)();
按照 is……
[/Quote]
函数名是比较特殊的东西,可能语言本身在设计时考虑到函数名与函数指针读写习惯与方便性就设计为这样了
所以,这可能不再是语法问题,而是规定了,具体我也没考虑过,楼主可以查阅下标准文档
所以,你前面的那些理解正确与否还是要参考标准文档,
但是“对于:(&f2)() 是f2转成函数指针,然后&f2取函数之指针的地址。。。。然后。。。。”
这句话我觉得是有问题的,函数名本身是一个左值,所以在取其地址之前函数名并不会转换为函数指针,很简单的原因,如果在取其地址之前函数名转换为函数指针,那么再取其地址之后,表达式的类型将会是void(**)(); 将不能作为函数指针来调用,
独自听枫
2012-01-30
打赏
举报
回复
自定义转换,不算特殊,只是少用
caddor
2012-01-30
打赏
举报
回复
前辈,在请教个问题,我对这个问题,查了一些资料,都没有彻底理解
void f2() {....}
以下都是对的:
(&f2)();
(*f2)();
(****************************f2)();
(****************************&f2)();
(&*f2)();
按照 iso中提供的资料说是:
普通函数调用:跟着括号的后缀表达式。
调用的时候,后缀表达式转换为函数指针。
比如: (*f2)() 是指 f2转成函数指针吗? *f2又指函数名字,然后*f2再次转为函数指针。。。
转了两次, 是不是这样理解???
对于:(&f2)() 是f2转成函数指针,然后&f2取函数之指针的地址。。。。然后。。。。
我肯定理解有问题
能帮忙纠正一下吗
[Quote=引用 2 楼 we_sky2008 的回复:]
引用 1 楼 we_sky2008 的回复:
这是自定义的转换函数
楼主翻下书吧,书中讲的很清楚
看下《c++ PRIMER》或者《MORE EFFECTIVE C++》Item M5:谨慎定义类型转换函数
[/Quote]
caddor
2012-01-30
打赏
举报
回复
我不觉的要慎用啊
比如:CString 中就用了
operator LPCTSTR() const
[Quote=引用 2 楼 we_sky2008 的回复:]
引用 1 楼 we_sky2008 的回复:
这是自定义的转换函数
楼主翻下书吧,书中讲的很清楚
看下《c++ PRIMER》或者《MORE EFFECTIVE C++》Item M5:谨慎定义类型转换函数
[/Quote]
ybxuwei
2012-01-30
打赏
举报
回复
强制转换函数,把Sample转化为int*类型
int *p = (int*)Sample;
we_sky2008
2012-01-30
打赏
举报
回复
[Quote=引用 1 楼 we_sky2008 的回复:]
这是自定义的转换函数
楼主翻下书吧,书中讲的很清楚
[/Quote]
看下《c++ PRIMER》或者《MORE EFFECTIVE C++》Item M5:谨慎定义类型转换函数
we_sky2008
2012-01-30
打赏
举报
回复
这是自定义的转换函数
楼主翻下书吧,书中讲的很清楚
python中重载运算符知识点
分量分别相加,创建并返回一个新的向量对象,表示两个向量相加的结果。方法接收两个参数:第一个参数是调用该方法的对象本身(通常用。在方法内部,通过将两个向量的。
python中mod运算符_Python
运算符重载
Python
运算符重载
您可以根据所使用的操作数来更改Python中运算符的含义。 这种做法称为运算符过载。什么是Python中的
运算符重载
?Python运算符用于内置类。但是相同的运算符对不同的类型有不同的行为。例如,+运算符将对两个数字执行算术加法、合并两个列表并连接两个字符串。Python中的这一功能允许同一运算符根据上下文具有不同的含义,称为
运算符重载
。那么,当我们将它们与用户定义类的对象...
第11篇:从入门到精通:掌握python
特殊
方法与
运算符重载
*
特殊
方法(魔术方法)**是Python中以双下划线开头和结尾的方法(例如__init____str____repr__等),它们赋予对象某些
特殊
的行为。这些方法通常在特定情况下被Python解释器自动调用,用于实现对象的初始化、表示、
比较
、运算等功能。
运算符重载
是指在类中定义
特殊
方法,以改变运算符(如等)在自定义对象上的行为。通过
运算符重载
,可以使自定义对象支持常见的运算符操作,从而提高代码的可读性和表达力。通过定义
比较
相关的
特殊
方法,可以使自定义对象支持
比较
运算符(如==等)。常用的
比较
特殊
方法。
Python
运算符重载
Python运算符用于内置类。但是相同的运算符对不同的类型有不同的行为。例如,+运算符将对两个数字执行算术加法、合并两个列表并连接两个字符串。Python中的这一功能允许同一运算符根据上下文具有不同的含义,称为
运算符重载
。那么,当将它们与用户定义类的对象一起使用时会发生什么呢?示例 :下面的类,它试图在二维坐标系中模拟一个点。复制self.x = xself.y = y1.2.3.4.现在,运行代码并尝试在Python shell中添加两个点。复制1.2.3.
python——
运算符重载
与
特殊
方法
运算符重载
是指在Python中,通过定义
特殊
方法,使自定义类的对象能够像内置数据类型一样使用各种运算符,从而实现更自然和直观的操作。
特殊
方法是以双下划线__开头和结尾的方法,它们在特定的操作或场景下被Python自动调用。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章