gpt4 book ai didi

javascript - 像 Javascript 对象的方法一样重写 C++ 对象的方法?

转载 作者:太空宇宙 更新时间:2023-11-03 10:43:48 24 4
gpt4 key购买 nike

我想知道是否可以像在 JavaScript 中那样在 C++ 中覆盖对象的方法。 (虽然“谷歌搜索”它我没有找到任何东西)

也就是说,

Javascript:

function Test(){
this.doStuff = function(){
console.log('Original');
}
}

var obj = new Test();
obj.doStuff(); //"original"
obj.doStuff = function(){
console.log('overrided');
};
obj.doStuff(); //"overrided"

C++:

class Test{
public:
void doStuff(){
std::cout << "original" << std::endl;
}
}

int main(){
Test obj;
obj.doStuff(); //"original"
/*obj.doStuff ...???? */
}

是否可以在 C++ 中做类似的事情?

最佳答案

是的,这是可能的,但不是以等效的方式,而是通过使用 C++11 函数对象来代替:

#include <functional>
#include <iostream>

void originalDoStuff(){
std::cout << "original" << std::endl;
}

class Test{
public:
std::function<void()> doStuff;

Test():doStuff(originalDoStuff) {}
};

int main() {
Test t;
t.doStuff();

t.doStuff = []() { std::cout << "new stuff" << std::endl; };
t.doStuff();
}

关于javascript - 像 Javascript 对象的方法一样重写 C++ 对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com