【问题标题】:How to assign to a variable a value without assignment operators如何在没有赋值运算符的情况下为变量赋值
【发布时间】:2013-08-04 19:50:15
【问题描述】:

有以下程序:

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

在注释“//在此处插入解决方案”中,应包含一行指令,以不使用赋值运算符(++、+=、=、...)为 f 赋值 7

编辑:我复制代码时出错。两个地方都是 7。

【问题讨论】:

    标签: c++ variable-assignment assignment-operator


    【解决方案1】:

    你应该写Base::assign();

    【讨论】:

    • 虽然我同意这可能是原始测验设置者想要的解决方案,但我不明白为什么不直接删除 hijo::assign 函数,让编译器调用 Base::assign首先有第二个功能?
    【解决方案2】:

    怎么样:

    void assign()
    {
       int seven(7); memcpy(&f, &seven, sizeof(seven));
    }
    

    这显然是一个完全没用的练习,而且也不是很干净。但我认为它符合任务的标准。

    【讨论】:

    • 当然...给我一个理由来删除我的答案;)
    • 你的回答和我的很不一样... ;)
    • 应该在一行中。无论如何谢谢:)
    • 现在是一行... ;)
    • @Oni 你想做什么。 memcpy 和 assignment 将被编译器分解为同一个东西。
    【解决方案3】:

    如果在这两种情况下都应该是7,那么就可以了:

    class Hijo: public Base
     {
      public:
       void assign()
        {
         Base::assign();
        }
     };
    

    【讨论】:

    • ... 然后f5 结束,而不是7
    猜你喜欢
    • 2011-01-16
    • 2012-11-02
    • 2019-04-26
    • 1970-01-01
    • 2021-04-04
    • 2011-08-02
    • 2019-10-06
    • 2015-03-18
    • 2016-02-23
    相关资源
    最近更新 更多