static EntryType Graph::getEntryPoint() { return "_start"; }
void MyClass::init(Graph &g) { const EntryType entry = Graph::getEntryPoint(); }
这么简单的一段程序,调试时看 entry 的值,里面存的东西跟"_start"半毛钱关系都没有。 因为"_start"传出去时隐式 cast 成 EntryType ,然后 EntryType 实现的转换操作里做了一堆骚操作。
1
carlself 1 天前 &t=99s 看看这个视频解压一下,喷了两个小时 C++
|
3
yolee599 22 小时 31 分钟前 via Android 我就是能用 C 就不用 C++
|
4
songray 22 小时 11 分钟前 @carlself 这个视频我完整的看完了...
最搞的是,从 GitHub 主页来看,这作者真的是 C++ 的高级开发,吐槽的也都在点子上。 看完后我的看法是,越 modern 越复杂,越 modern 越不好用,不如 C with class ( |
5
vfs 22 小时 1 分钟前 "然后 EntryType 实现的转换操作里做了一堆骚操作": 所以还是实现 EntryType 的人的问题么。 你 hold 不住就不要用这么高级的特性么,当作 c with class 来写不就可以了么
|
6
xdeng 21 小时 58 分钟前
C++ 越来越看不懂,语法越新越看不懂,学学 go 吧
|
7
jeffw 21 小时 53 分钟前
重载了等号操作符?感觉没啥毛病
|
8
levelworm 21 小时 53 分钟前 via iPhone
我只会写 C+class 。最爽的是用 std::unordered_map
|
9
dandeli0n 21 小时 49 分钟前
|
10
whenov 21 小时 46 分钟前
这不是应该看 EntryType 的构造函数吗
|
11
allentsau 21 小时 45 分钟前 via Android
C11
|
12
jqknono 21 小时 0 分钟前
写了十几年 c++, 仍然觉得恶心, c++本身语法就繁杂, 那种很简洁的 c++只存在于各种书本里. 实际上的代码五花八门. 而且经常不得不去学习 cmake,makefile,gcc,gdb,microcode, 这里边每一个都很恶心, 宏也非常恶心. 总之它可能本身可以写的很优雅, 但是它允许各路人马以各种恶心的方式完成工作, 最气人的是没 bug 能跑, 就是人很难直接看懂. 可以说是一门标准的安卓语言.
|
14
cbythe434 20 小时 48 分钟前
php 是世界上最好的语言
|
15
givenge 20 小时 42 分钟前 |
16
daokedao 20 小时 39 分钟前
Rust 现在怎么样了?要不要转 Rust ?或者 Mojo ?
|
17
chutianyao 15 小时 52 分钟前 这不是你自己的问题么
static EntryType Graph::getEntryPoint() { return "_start"; } 函数返回的"_start"是 String 类型, 你又声明需要 EntryType 类型, 自然就做了隐式转换. 就像楼上说的, 你的 EntryType 如果有 String 类型的构造函数, 自然就能编译通过(转换成 EntryType 类型); 如果不支持, 编译失败你都没机会跑这段代码. 大概率就是你的 EntryType 构造函数瞎搞, 鬼知道他会把 String 类型的值转换成啥 |
19
Zenon 13 小时 7 分钟前
不懂,这不是很合理吗
|
20
moudy OP @chutianyao 这是别人写的代码。如果 c++要求写 return EntryType("_start"); 用户起码知道这里可能会有坑。
还有代码写 result = xxxx(); if(result.second) result->second(); 你问这俩 second 有啥区别,呵呵,->被重载了,你猜去吧。 代码光读是没用的,每个符号都 tm 可能是别的意思。挂着 debugger 一层一层往里跟进,就跟解剖一具尸体看肠子里吃的是啥一样。 |
21
thiiadoewjwe 10 小时 13 分钟前
C++确实太恶心了,以及各种库的适配,版本问题,动态库链接的问题...让人头大
|
22
moudy OP @carlself 看到一小时二十分钟时我吐槽的玩意终于出现了
class Animal { public: Animal(int animalAge) : age(animalAge) {} private: int age; }; Animal cat = Animal(5); // Clear intention to create an Animal. Animal cat = 5; // Implicitly converts 5 to Animal(5). This is the source of many bugs where programmers mistakenly pass one type around |
24
qiany 6 小时 23 分钟前
Javaer 吓哭了
|