基本语法请教

zwjchina 2011-11-18 04:16:44

struct SVertexColorSetAlphaManipulator
{
public:
SVertexColorSetAlphaManipulator(u32 alpha) : Alpha(alpha) {}
void operator()(video::S3DVertex& vertex) const
{
vertex.Color.setAlpha(Alpha);
}
private:
u32 Alpha;
};


这里的 运算符号() 什么时候会被调用
...全文
176 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
qscool1987 2011-11-18
  • 打赏
  • 举报
回复
函數對象而已,他和构造函数没什么冲突,它你就把它当函数
zzcmx2008 2011-11-18
  • 打赏
  • 举报
回复
c++ primer上面的一个简单的例子:
struct absInt
{
int operator()(int val)
{
return val<0?-val:val;
}
};

int i = -42;
absInt absobj;
unsigned int ui = absobj(i); //函数对象就是说这个对象可以表现的像函数一样被使用,但是多数用在标准算法里面。
zzcmx2008 2011-11-18
  • 打赏
  • 举报
回复
重载调用操作符,主要用在标准库、标准算法里面,用来作为函数对象的,
可以百度,函数对象
healer_kx 2011-11-18
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pengzhixi 的回复:]

SVertexColorSetAlphaManipulator obj;
video::S3DVertex parm;

obj(parm);这个时候就会调用。
[/Quote]
+++
测试NULL 2011-11-18
  • 打赏
  • 举报
回复
你找本好的C++基础书看看吧

#include <iostream>
using namespace std;

typedef unsigned u32;

namespace video
{
class S3DVertex
{
};
}

struct SVertexColorSetAlphaManipulator
{
public:
SVertexColorSetAlphaManipulator(u32 alpha) : Alpha(alpha) {}
SVertexColorSetAlphaManipulator(video::S3DVertex& vertex) {}

void operator()(video::S3DVertex& vertex) const
{
cout << "calling operator()" << endl;
}
private:
u32 Alpha;
};

int main(void)
{
u32 alpha;

SVertexColorSetAlphaManipulator obj(alpha);
video::S3DVertex parm;

obj(parm);

return 0;
}
柯大侠爱喝水 2011-11-18
  • 打赏
  • 举报
回复
当你定义对象的时候初始化,就可以用到他了,structobj(obj);
如果定义时没初始化,后边去用对象初始化的时候,用到的是赋值构造 optreater =
柯本 2011-11-18
  • 打赏
  • 举报
回复
同样obj(parm);时,调用void operator()
一叶之舟 2011-11-18
  • 打赏
  • 举报
回复
obj(parm);//调用 operator()(video::S3DVertex& vertex)
SVertexColorSetAlphaManipulator obj2(parm);调用SVertexColorSetAlphaManipulator(video::S3DVertex& vertex)
pengzhixi 2011-11-18
  • 打赏
  • 举报
回复
没什么不好理解啊
SVertexColorSetAlphaManipulator obj(alpha);
video::S3DVertex parm;
obj(parm);//调用 operator()(video::S3DVertex& vertex)
SVertexColorSetAlphaManipulator obj2(parm);调用SVertexColorSetAlphaManipulator(video::S3DVertex& vertex)
zwjchina 2011-11-18
  • 打赏
  • 举报
回复
这东西真费解呀。要是


C/C++ code
struct SVertexColorSetAlphaManipulator
{
public:
SVertexColorSetAlphaManipulator(u32 alpha) : Alpha(alpha) {}
SVertexColorSetAlphaManipulator(video::S3DVertex& vertex) {}

void operator()(video::S3DVertex& vertex) const
{
vertex.Color.setAlpha(Alpha);
}
private:
u32 Alpha;
};




这怎么理解呢
pengzhixi 2011-11-18
  • 打赏
  • 举报
回复
额 修改下
u32 alpha=12;
SVertexColorSetAlphaManipulator obj(alpha);
video::S3DVertex parm;
obj(parm);
zwjchina 2011-11-18
  • 打赏
  • 举报
回复
那构造函数呢?
pengzhixi 2011-11-18
  • 打赏
  • 举报
回复
SVertexColorSetAlphaManipulator obj;
video::S3DVertex parm;

obj(parm);这个时候就会调用。
内容概要:本文详细介绍了吉林大学Java课程的学习经历,从初印象、Java语言的魅力、课程内容剖析、学习方法与经验分享、遇到的困难及解决方法,到最后的学习成果与感悟。课程不仅涵盖了Java的基础语法,还深入讲解了面向对象编程、图形化用户界面、异常处理、输入/输出流、并发控制、数据库操作和网络编程等高级特性。通过课堂学习和课后实践,学生能够掌握编程技能,培养问题解决能力和编程思维。学习过程中难免遇到困难,如理解泛型、解决语法错误和调试程序等,但通过查阅资料、请教他人、利用技术论坛和反复调试,可以克服这些障碍。最终,学生不仅能独立完成项目开发,还能在编程思维和逻辑能力上获得显著提升。 适合人群:对编程感兴趣的技术爱好者,尤其是希望系统学习Java编程语言的初学者和有一定编程基础的进阶学习者。 使用场景及目标:①希望通过系统学习掌握Java编程语言的基础语法和高级特性;②通过实际项目和练习提高编程技能和问题解决能力;③培养编程思维和逻辑能力,为未来从事Java开发打下坚实基础。 其他说明:文章强调了坚持学习的重要性、团队合作的价值以及不断探索和实践的意义。建议读者在学习过程中,不仅要关注课堂内容,还要积极参与课后练习、项目实践和技术交流,以全面提升自己的编程水平。此外,鼓励读者深入学习Java框架和分布式系统、大数据处理等前沿技术,为未来的职业发展开拓更广阔的空间。

65,206

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧