基本语法请教

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;
};


这里的 运算符号() 什么时候会被调用
...全文
152 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);这个时候就会调用。
课程设计实现了简单C语言编译器,包括词法分析、语法分析(LL1)、语义分析、四元式优化和目标代码生成。实验内容包括表达式语法分析器、词法分析扫描器、算术表达式四元式翻译器 C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这包括了解课程设计的主题、目标以及需要解决的问题。这将有助于你确定设计的范围和方向。 选择项目主题:选择一个与C语言相关的项目主题。例如,你可以设计一个学生成绩管理系统、一个简单的文本编辑器或一个游戏等。确保所选主题既具有挑战性又能够展示你的C语言编程技能。 进行问题分析:一旦确定了项目主题,你需要对问题进行深入分析。这包括确定问题的输入和输出、理解问题的要求和限制条件,以及将复杂问题分解为更小的子问题。这将有助于你更好地理解和解决问题。 设计算法和数据结构:针对项目需求,设计合适的算法和数据结构。这包括确定如何存储和处理数据、如何设计函数和模块等。 编写代码:使用C语言编写代码,实现项目功能。注意遵守C语言的语法规则,确保代码的可读性和可维护性。 测试和调试:在编写完代码后,进行测试和调试。确保代码能够正确运行并满足项目需求。使用调试工具和技术来查找和修复代码中的错误。 文档编写:编写项目文档,包括项目说明、功能介绍、代码注释等。这将有助于其他人理解你的项目并复用你的代码。 提交和展示:最后,将你的课程设计项目提交给教师或相关人员,并在课堂上进行展示。展示时可以介绍项目的功能、实现过程以及遇到的挑战和解决方案等。 在进行C语言课程设计时,还需要注意以下几点: 遵守编程规范,包括变量命名、代码缩进、注释等。 充分利用C语言的特点和优势,如指针、结构体、文件操作等。 注重实践和应用,通过解决实际问题来加深对C语言的理解和应用能力。 在遇到困难时,及时向教师或同学请教,并查阅相关资料和文档。 通过以上步骤和建议,你可以完成一个高质量的C语言课程设计项目,并提升自己的编程能力和实践经验。

64,648

社区成员

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

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