- 主题:我们很多同事都是完全不用unique_ptr,一律shared_ptr
现在是有些人在乎,有些人不在乎。
【 在 ylh1969 的大作中提到: 】
: 是。40年前,ibmpc,4.77M主频。
: 在那机器上写程序,很在乎这点开销。
--
FROM 125.78.41.*
39楼越界问题,有招法吗?
【 在 hgoldfish 的大作中提到: 】
: 现在是有些人在乎,有些人不在乎。
:
--
FROM 112.224.166.*
没理解。
泛型编程很重要,尤其是运行时泛型,就是靠回调函数。请看C版关于泛型的帖子。
运行时泛型,主要两点:
模板,对数据类型具体描述,然后由泛型系统进行模式化操作,如序列化反序列化,SQL操作,柔性编程等等。
回调函数,你的数据你处理,泛型只管算法。
【 在 hgoldfish 的大作中提到: 】
: 在我看来,智能指针、各种泛型编程,都是大量使用回调函数的后遗症。本来就不应该存在。
:
--
修改:ylh1969 FROM 112.224.166.*
FROM 112.224.166.*
你不是一直用协程吗?可以用一个套路,把所有的回调都转成协程阻塞的玩法:
回调式:
void on_success(result_set) {
/* 直接处理事件 */
}
async_query(sql, on_success);
可以转成:
// 接下来三行是固定套路。
finished = new event();
void send_result(result_set) {
finished.send(result_set);
}
async_query(sql, send_result);
// 程序员专注这一行
result_set = finished.await();
没有回调,生命周期就很好协调。
其中的工具类是 Event, 它有两个方法:
Event::send(T result);
T Event::await();
它的定义是
class Event {
T result = T();
bool success = false;
Condition condition;
}
这就是把回调薅直的秘密。
【 在 ylh1969 的大作中提到: 】
: 没理解。
: 泛型编程很重要,尤其是运行时泛型,就是靠回调函数。请看C版关于泛型的帖子。
: 运行时泛型,主要两点:
: ...................
--
修改:hgoldfish FROM 125.78.41.*
FROM 125.78.41.*
两回事。
这里说的是指针问题,运行时泛型要用到指针。回调函数是个指针,在泛型程序里,序列化反序列化过程需要指针,SQL语句生成器需要指针,绑定变量需要指针,收集结果需要指针,,,,
所有的泛型程序,接受的数据,不知道类型,一律void *;就是指针,而且没法用智能指针。
据说,有的单位不让用指针,那完了,泛型编程搞不了了。
【 在 hgoldfish 的大作中提到: 】
: 你不是一直用协程吗?可以用一个套路,把所有的回调都转成协程阻塞的玩法:
: 回调式:
: void on_success(result_set) {
: ...................
--
修改:ylh1969 FROM 112.224.166.*
FROM 112.224.166.*
c++里拼接字符串多简单
【 在 ylh1969 (没谱) 的大作中提到: 】
: 看我的字符串组装程序:
: p+=sprintf(p,"format",,,);
: 用于生成SQL语句。
: p总是指向字符串的尾部,下一个成分直接接上。
--
FROM 218.12.20.*
cout << .. << ..
string << .. << :
最后,stmt=string.cstr();
之后可能还要做点编辑工作。
【 在 z16166 的大作中提到: 】
: c++里拼接字符串多简单
: --
: 发自xsmth (iOS版)
--
修改:ylh1969 FROM 112.224.156.*
FROM 112.224.156.*
这种情况怎么会用指针?
用值语义非常方便。
c++ 如今有 move 语义,这种传递数据最佳的方案就是直接返回结果,别让客户把指针传进来。虽然底层也可以理解成指针,但配合 RAII 或者 uniqure_ptr,应用层的程度员不再需要管指针了。
【 在 ylh1969 的大作中提到: 】
: 两回事。
: 这里说的是指针问题,运行时泛型要用到指针。回调函数是个指针,在泛型程序里,序列化反序列化过程需要指针,SQL语句生成器需要指针,绑定变量需要指针,收集结果需要指针,,,,
: 所有的泛型程序,接受的数据,不知道类型,一律void *;就是指针,而且没法用智能指针。
: ...................
--
FROM 125.78.41.*
如果少数人这样是人的问题。如果很多人这样用,那就是语言的问题了。c++不在基础库上发力,语法发展得都快读不懂了。
【 在 z16166 的大作中提到: 】
: 就是“无脑”。跟无脑用递归锁是一样的。
: 但归根结底,是因为没有“规则”和惩罚,只靠个人品味。
--
FROM 123.113.102.*
这可不是语言的问题,而是这个level的语言(靠近机器的无GC的语言)都要面临这个问题。
比如Rust有Box<T>、Rc<T>、Arc<T>。
也就是说,如果你不需要区分unique_ptr和shared_ptr,那么你实际上很可能可以换用别的语言来实现你的需求,比如js或者py,这样就不用关心这个level的问题。
再一个,unique_ptr和shared_ptr不属于语法范畴,只是库。
【 在 iamiiami 的大作中提到: 】
: 如果少数人这样是人的问题。如果很多人这样用,那就是语言的问题了。c++不在基础库上发力,语法发展得都快读不懂了。
--
修改:z16166 FROM 111.199.144.*
FROM 111.199.144.*