T******7 发帖数: 1419 | 1 每天拿cpp11说事。别人写个cpp03的写法 他就code review揪着不放,非要改成他喜欢
的样子才checkin.傻逼死了 |
|
|
r*g 发帖数: 186 | 3 struct S{
S(int){}
};
struct SS{
int m;
SS(int x): m(x){}
explicit operator S(){return S(m);}
};
void f(S s){}
int main()
{
SS ss(1); // ok; 默认构造函数
S s1 = ss; // 错误; 拷贝构造函数不能使用显式转换
S s2(ss); // ok; 直接构造函数可以使用显式转换 ???
// 为什么? 这里难道不是 S s2(static_cast(ss))吗???
// 而且我的理解这里是先ss转成S型的临时变量
// 然后调用copy constructor
// 为什么说这里是直接构造函数?
f(ss); // 错误; 从SS向S的转换必须是显式的.
// 译注: 强制类型转换也可使... 阅读全帖 |
|
h*******s 发帖数: 8454 | 4 in cpp11 you can do
str.back() = your_char |
|
|
|
x****u 发帖数: 44466 | 7 这样并发就更不是专长了。
CPP11的特性是鼓励新手程序员生产垃圾的。 |
|
mw 发帖数: 525 | 8 c++11和boost现在引入了lambada,多线程和atomic这样的features,我接触到的人对
这个看法比较极端,一部分人说这些新的features把c++搞的更加不伦不类,另外一部
分人说这些features把cpp的编程效率提高到了java的水平(甚至更高)
想请教一下TeacherWei对这个的看法。你们现在的系统有没有采用cpp11的这些新的功
能呢? |
|
|
A*******e 发帖数: 2419 | 10 给个例子?
如果11确实简化了代码,不是坏事啊。 |
|
t*****n 发帖数: 4908 | 11 我早说过转到11是很折腾人的事情。版上一帮人还不信。动不动就说11语法怎么怎么。 |
|
N******K 发帖数: 10202 | 12 smart pointer, auto, labmda 还有啥? |
|
|
p*u 发帖数: 2454 | 14 disclose company's name pls... |
|
|
H****l 发帖数: 778 | 16 这叫与时俱进。
有的人火车出来时,非说马车才是正统,坐火车的都是装逼
无线电出来时,有人就要写信,说电报是巫术,装逼。 |
|
h**********c 发帖数: 4120 | 17 不过也有说世界语装*的
还有中学6年俄语的
不可道 |
|
n*w 发帖数: 3393 | 18 今天听说Facebook有用haskell做某部分 |
|
|
n****l 发帖数: 1739 | 20 大公司的code review大部分是浪费时间 |
|
|
z****e 发帖数: 54598 | 22 高考本来就有日语和俄语
不是只有英语,还有法语
外文学院一般一年能毕业2-3个俄语专业的
全部送莫斯科留学,不用想
法语,日语学的人都多,外文学院法语日语都不算是小语种了
英专最没用,翻译价格最低
法语日语翻译每天兼职都是最少200块钱日结,这是最差的
英专去,叫价20的都有 |
|
|
t**r 发帖数: 3428 | 24 有了智能指针 std::function这些东西
我基本在代码里不用任何delete.也就是不用太担心内存
我可以轻松地写callback
我可以开心的用丰富的collection和operator overload
真的没必要上go. |
|
|
a***n 发帖数: 538 | 26 shared_ptr真的挺慢的。
而且多线程用的时候,感觉需要memory barrier。 |
|
n*****3 发帖数: 1584 | 27 智能指针 can be thinking of another way to do GC/memory manager |
|
T********i 发帖数: 2416 | 28 你这句评论就能看出来你还没搞懂memory barrier. |
|
|
T********i 发帖数: 2416 | 30 C++ 11这个设计属于脑袋被驴踢了。
其实asm voltile memory用起来更爽。
但是不是所有的CPU体系结构都能用。
但是我只在乎X86,顶多加上arm。 |
|
a***n 发帖数: 538 | 31 撇开barrier不说,shared_ptr的计数器还是要被多个线程同时读写,就算是x86的原子
操作,效率也高不到哪里去。 |
|
T********i 发帖数: 2416 | 32 当你用到线程这个词的时候,你已经和高效率无缘了。 |
|
T********i 发帖数: 2416 | 33 再给你透漏一点点。
1。原子操作本身就是硬件memory barrier。
2。原子操作都是写操作。读操作只要aligned都是原子的。primitive type。
3。效率高不到哪里去的言论纯属臆断。效率可以做到基本linear。取决于你怎么做。 |
|
a***n 发帖数: 538 | 34 原子操作只对操作本身的变量有barrier,如果share_ptr的计数器本身和指向的变量之
间没有同步,最后一个指针释放的顺序会不对。以前boost实现肯定有问题,加了
barrier以后就不出错,所以我也没有仔细去研究是怎么回事。
两个线程同时操作同一个变量,L1怎么的都会被invalidate,效率怎么会高? |
|
T********i 发帖数: 2416 | 35 我一年前说过:假如现在太阳突然熄灭,对地球一点影响都没有,为什么?
因为要过大约8分20秒以后才能影响到地球。
只有发生在光锥内事件需要遵循因果律。
你要用狭义相对论的方法论来理解memory barrier。 |
|
a***n 发帖数: 538 | 36 之所以用shared_ptr,就是为了不每次都要考虑什么时候释放内存。如果需要每次用的
时候都要想一想因果关系,还不如手动处理内存,或者用有gc的语言。 |
|
T********i 发帖数: 2416 | 37 shared_ptr用的是最简单的memory barrier。总纠结这个shared_ptr其实对你的理解没
有什么帮助。 |
|
a***n 发帖数: 538 | 38 有本事你去实现一个不需要barrier的,我现在也不用c++了。 |
|
T********i 发帖数: 2416 | 39 所以我说你对barrier没完全理解也没错呀?
shared_ptr用的是atomic指令,也只能用atomic指令。atomic指令就是barrier。这些
都没错。
但是barrier不一定是atomic指令。 |
|
a***n 发帖数: 538 | 40 atomic只是对计数器本身,对于指向的变量,最后一个指针消失之前,在两个进程中对
计数器和变量本身是没有因果关系的。这个帖子我也不想回了,你自己去想吧。 |
|
w***x 发帖数: 105 | 41 1. atomic操作不太可能降低性能太多
2. boost的开发者不可能犯这么基础的错误,即使我没看boost的实现,但一个简单的
cmp & exchange也能很简单的解决问题
3.我从来没觉得这些c++智能指针能够真正解决内存泄露问题 |
|