- 主题:Java农转写cpp发现,写Java比写cpp省心太多了
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: 可以不代表该这么用
: 我见了太多的纯C风格java,python和javascript代码,都是印度培训班杰作
: 一般来说用什么语言就应该按照什么语言的标准库的规矩写,stl和boost为什么要抛异常啊
C++ 异常最大的问题是,知道怎样写异常安全代码的程序员太少。。
语言本身在降低写异常安全代码的难度这一块也不上心,只会教育人 RAII,又不提供好用点的支持,学 Go 提供一个 defer 也行啊,甚至哪怕加一个 finally 也比现状好
: ...................
--
FROM 59.41.116.*
使用异常的 C++ 代码得把所有涉及到打开/关闭、获取/释放此类操作的代码都用 class 封装起来(所谓 RAII),在实际工程开发中挺麻烦。
而且,RAII 鼓励在构造函数中完成完整的初始化(与之相对的做法是在构造函数里基本不做什么事,真正的初始化由一个单独的 Init 函数来执行),这样就避免不了构造函数抛异常。
然而,只要允许了构造函数抛异常,那写代码就需要更小心了。举个例子,请问下面代码中,分别在以下几种情况下:
* 构造 b_ 时抛了异常
* 构造 c_ 时抛了异常
* (1) 处抛了异常
* (2) 处抛了异常
~A() 会执行吗?c_ 的析构函数会执行吗?b_ 的析构函数会执行吗?
class A {
public:
A() : b_(), c_() { /* ... */ }
A(int x) : b_(), c_() { /* (1) */ }
A(float x) : A() { /* (2) */ }
~A() { /* ... */ }
private:
B b_;
C c_;
}
【 在 hgoldfish (老鱼) 的大作中提到: 】
: 异常安全有什么坑吗?
: 不是抛出 Exception,接收的时候用 Exception & 就行了吗?
--
修改:vonNeumann FROM 183.60.88.*
FROM 183.60.88.*
使用第三方库的时候避免不了,很多库提供的是 C 风格的接口
【 在 xiaoju (可爱的龙猫) 的大作中提到: 】
: 写C++的基本求生法则是熟读inside the C++ object model
: 不过理论上说,现代C++不必也不应该手动分配任何一个raw的资源。不如立条规则,破一次例罚款200块钱,请其他人吃东西。
--
FROM 183.60.88.*