败犬日报 2024-11-23
1. 怎么获取类的析构函数指针
并不能。
写一个函数或 lambda 调用一下析构,恭喜你发明了 std::destroy_at
。
https://zh.cppreference.com/w/cpp/memory/destroy_at
2. 面向对象编程的弊端是什么
3. 宏魔法之 for
实现 TEST(n, f)
展开为 f(1), f(2), ..., f(n)
。
这个东西用模版做最合适。如果只能用宏,可以用拼接的方式:
cpp
#define TEST1(f) f(1)
#define TEST2(f) TEST1(f), f(2)
#define TEST3(f) TEST2(f), f(3)
#define TEST4(f) TEST3(f), f(4)
#define TEST(n, f) TEST##n(f)
extern int f(int);
int g() {
TEST(4, f);
}
借助 boost 实现:
https://godbolt.org/z/387nbc419
4. 宏元编程
看一乐。
https://zhuanlan.zhihu.com/p/152354031
5. std::string_view
不要传给 C 风格字符串接口
错误示范:
cpp
void print(std::string_view s) {
printf("%s\n", s.data());
}
string_view 不保证末尾的后一个字符是 \0
。