如何添加到此代码,以便打印“b”而不删除任何内容?

时间:2017-01-27 19:54:25

标签: 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();
}

我希望通过添加它来编辑此代码但不删除任何内容,因此无论输入如何,它都会打印字母"b"而不是"a"。 怎么可能?我还没有在互联网上找到答案?

5 个答案:

答案 0 :(得分:2)

使用退格:

someId

退格字符(cout << "a\bb"; )将光标移回,然后\b覆盖b

答案 1 :(得分:1)

这会增加您的代码;不会删除任何内容并打印'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();
}

答案 2 :(得分:1)

在命名空间中包装类。然后写自己的。命名空间是新的。你的新班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();
}

答案 3 :(得分:0)

您可以使用逗号

的discard属性
var span = document.getElementById('reportSpans');
var baseURL;

span.onchange = function() {
baseURL = "report" + this.value;
document.getElementById("report").href = baseURL;
}

var ac = document.getElementById('reportAircraft');
ac.onchange = function() {
document.getElementById("report").href = baseURL + this.value + ".php";
alert(document.getElementById("report").href);
}

---编辑---

为了避免警告&#34;逗号运算符的左操作数没有效果&#34;例如,您可以将void print() const {cout << ("a", "b") << endl ;} 投射到"a"

(void)

答案 4 :(得分:0)

@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'

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