我有用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"
。
怎么可能?我还没有在互联网上找到答案?
答案 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
,则将调用派生类的实现。