- 主题:c++反射提案正式进入标准
不是设计出来了吗?
动不动反射的 c++ 就是 python.
用来做系统编程的 c++ 就是 rust 啊!
【 在 nextworld8 的大作中提到: 】
: c++感觉各种堆砌 罗显杂乱
: 还不如 直接重新设计c+++ 各种特性有机统一
--
FROM 110.84.122.*
c/c++ 都是搞无负担的语言。
你需要的是 java.
来吧,加入我们 java 大军吧!
【 在 butcher 的大作中提到: 】
: 我说设计的跟屎一样。
: 语言是工具。
: 加一层设计,
: ...................
--
FROM 110.84.122.*
那你用 Qt 啊。
Qt 还有 vscode 和 QtCreator 都可用。
【 在 nextworld8 的大作中提到: 】
: 我也觉得gui对于C++ 很重要 如果有好的组建库和ide
: 类似delphi和vs c# 我觉得c++在应用软件绝对能打
--
FROM 110.84.122.*
欢迎来使用我们 Java.
【 在 nextworld8 的大作中提到: 】
: 语法变化太大
: 最好保留c++核心语言 其他各种特性简单明确
: 就如同多态 只要不设置虚函数virtual
: ...................
--
FROM 110.84.122.*
基于 vscode 搞的 cursor,值得你拥有。
一路按 tab 就行。
【 在 nextworld8 的大作中提到: 】
: 主要考虑ide的智能化和操作便利
--
修改:hgoldfish FROM 110.84.122.*
FROM 110.84.122.*
你 out 了。
现在 AI 已经非常好用。
已经是编程开发必备工具。
stackoverflow 的流量到这个月都降到快接近零了。
【 在 nextworld8 的大作中提到: 】
: 辅助可以 实际项目真不敢用
--
修改:hgoldfish FROM 110.84.122.*
FROM 110.84.122.*
本篇转载至我的知乎回答。
看到大家在讨论 C++ 的反射,我提供一个使用 Qt 实现 C++ 反射的方案。注意,并不代表我认同在游戏服务器里面使用反射——我没有这方面的经验,所以不会给出任何建议——只是顺便说一下 C++ 是可以实现反射的。
首先看一下使用我弄的 RPC. 实现 C++ 服务器供客户端调用是怎么样的:
// server.cpp
class Hello: public QObject {
public slots:
QString sayHello(const QString &name) {
return QStringLiteral("Hello, %1").arg(name);
}
};
int main(int argc, char **argv) {
QSharedPointer<Rpc> rpc = RpcBuilder(MessagePack).create();
QSharedPointer<Hello> hello(new Hello());
rpc->registerInstance(hello, "demo");
rpc->startServer("tcp;//127.0.0.1:8002");
return 0;
}
客户端用 python 实现更简单一些
# client.py
from lafrpc import Rpc
rpc = Rpc.use("thread", "msgpack")
peer = rpc.connect("tcp;//127.0.0.1:8002")
demo = peer.as_proxy().demo
print(demo.sayHello("World"))
主要是看服务端那里的代码,可以看到调用的时候使用根据客户传过来的方法名,即可找到要被调用的函数。
这里使用的是就是 Qt 的反射能力。只要使用 slots来描述类的方法,Qt 就会生成一些额外的代码用于 C++ 反射,包含函数名、参数类型、返回值类型等等。服务器取到调用函数名之后,即可反推使用哪个函数来调用。Qt 内部用的一个 switch/case 来转发请求速度还挺快。
后注:删除了无关紧要的部分代码。tcp; 需要换成 tcp:
【 在 slimcan 的大作中提到: 】
: 我怎么感觉这些新特性让屎山代码概率更大了?一个好的设计里为啥需要反射?有人能举个必须要反射才行的例子吗
--
修改:hgoldfish FROM 110.84.122.*
FROM 110.84.122.*
用了几年 c++ 我悟出来一个道理。。
但凡自己心里泛过一思疑虑,是否应该用 C++, 那么,别用 C++!
【 在 overcomeunic 的大作中提到: 】
: 面试官泛泛地问问也没有问题啊,但如果拿候选人不知某个特性就砍人,那多少是不合适的
: 除非是 那么多候选人,正好也有候选人知道这个,如果你是面试官,你怎么选? 这个多少说明 懂/知道 这个的候选人,多少是在与时俱进啊
: 这么多年了,喊着要干死C/C++ 的语言,多了去了,当前除了胶水语言python,好象也没有几个语言能超越 c/c++的
: ...................
--
FROM 110.84.122.*
用 c++ 主要是现实的考虑。
理论上应该存在比 c++ 更适合的语言的。可惜到现在似乎都还没出现。
【 在 butcher 的大作中提到: 】
: 小心被咬。
: 为了效率,别的都是屎。
: 效率第一,只关心效率。
: ...................
--
FROM 110.84.121.*
zig 也算。
rust 理论上也贴近硬件。
【 在 overcomeunic 的大作中提到: 】
: 贴硬件的,除了汇编,就C/C++了,还有哪一个呢
--
FROM 110.84.121.*