C++ 如何添加到该代码中,使其在不删除任何内容的情况下打印“b”?

C++ 如何添加到该代码中,使其在不删除任何内容的情况下打印“b”?,c++,c++11,C++,C++11,我用c++11编写了以下代码: #include <iostream> #include <string> using namespace std; class A{ public: void print() const { cout << "a" << endl; } }; void f(const A& a){ a.print(); } 我想通过添加但不删除任何内容来编辑代码,这样无论输入如何,它都会打印

我用c++11编写了以下代码:

#include <iostream>
#include <string>

using namespace std;

class A{
    public:
    void print() const { cout << "a" << endl; }
};

void f(const A& a){
    a.print();
}
我想通过添加但不删除任何内容来编辑代码,这样无论输入如何,它都会打印字母b而不是a。 这怎么可能?我在互联网上找不到答案?

使用退格:

cout << "a\bb";

退格字符\b将光标移回,然后b将覆盖a。

这将添加到代码中;不删除任何内容并打印“b”:

#include <iostream>
#include <string>

using namespace std;
class A{
public:
void print() const {cout << "b" << endl; 
    return; 
    cout << "a" << endl ;}
};

void f(const A& a){
a.print();
}

可以使用逗号的discard属性

void print() const {cout << ("a", "b") << endl ;}

@zmbq给出了一个很好的解决方案。这是我的照片

class A{ // could make this class abstract
public:
  virtual void print() const { cout << "a" << endl; }
};

class B: public A {
  void print() const { cout << "b" << endl; }
};

void f(const A& a) {
  a.print();
}

B b;
f(b); // it should print 'b'

如果传递的实例类型为B,则在派生类实现的函数f内将以这种方式调用。

在命名空间中封装类。然后写你自己的。名称空间是新的。你的新A班也是

namespace unused {
  class A{
    public:
    void print() const { cout << "a" << endl; }
  };
}

  class A{
    public:
    void print() const { cout << "b" << endl; }
  };

void f(const A& a){
    a.print();
}

你能解释一下为什么你不能移除任何东西吗?如果它是一个拼图,它应该在CodeGolf上,而不是Stackoverflow。不,它不是一个拼图,它只是我需要的,我不能触摸给定的代码,但我可以添加到它是的,它是一个拼图。这不是现实世界中人们会遇到的实际问题。这有点像是一个旨在测试多态性的问题。我试过了,但没有成功,它打印了一个altcode出价,具体取决于显示环境。实际上写了3个字符。Sop说,不管输入是什么,但这段代码只有在类型B的参数被发送到f时才起作用,这件事必须符合fA&aThat的正确性——它只处理类型B中的对象;逗号运算符的左操作数无效[-Wunused value]@Basilm-应该是警告,而不是错误;而且,是的,解决方案基于一个无效的左操作数。@Basilm-添加示例以避免警告
namespace unused {
  class A{
    public:
    void print() const { cout << "a" << endl; }
  };
}

  class A{
    public:
    void print() const { cout << "b" << endl; }
  };

void f(const A& a){
    a.print();
}