C++ 如何在没有赋值运算符的情况下为变量赋值
具有以下程序:C++ 如何在没有赋值运算符的情况下为变量赋值,c++,variable-assignment,assignment-operator,C++,Variable Assignment,Assignment Operator,具有以下程序: #include <iostream> using namespace std; class Base { public: int f; virtual void assign(){ f = 7; } }; class Hijo: public Base { public: void assign() { //Insert solution here } }; int main(){ Hijo
#include <iostream>
using namespace std;
class Base
{
public:
int f;
virtual void assign(){
f = 7;
}
};
class Hijo: public Base
{
public:
void assign()
{
//Insert solution here
}
};
int main(){
Hijo h;
h.assign();
printf("%d",h.f);
return 0;
}
#包括
使用名称空间std;
阶级基础
{
公众:
int f;
虚拟空分配(){
f=7;
}
};
类Hijo:公共基
{
公众:
无效分配()
{
//在此处插入解决方案
}
};
int main(){
Hijo h;
h、 赋值();
printf(“%d”,h.f.);
返回0;
}
在这里的注释“//插入解决方案”中,应包含一行指令,以便在不使用赋值运算符(++,+=,=,,…)的情况下为f赋值7
编辑:复制代码时出错。这两个位置都是7。如果两种情况下都是7,则可以:
class Hijo: public Base
{
public:
void assign()
{
Base::assign();
}
};
您应该编写
Base::assign()代码>如何:
void assign()
{
int seven(7); memcpy(&f, &seven, sizeof(seven));
}
这显然是一个完全无用的练习,而且也不是很干净。但我认为它满足了任务的标准。。。。然后f
以5
结束,而不是7
。当然……给我一个删除答案的理由;)你的答案和我的答案大不相同,尽管…;)它应该在一行中。无论如何,谢谢:)现在是一行…;)@你想干什么。memcpy和assign将由编译器分解为同一个部分。虽然我同意这可能是原始测验设置程序所期望的解决方案,但我不明白为什么不删除hijo::assign
函数,让编译器在没有第二个函数的情况下调用Base::assign
?