锁定老帖子 主题:我对C++复杂性的一些认识
精华帖 (0) :: 良好帖 (15) :: 新手帖 (1) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-12-19
我开始也用C++,特别喜欢指针,觉得对内存控制力超强。第二喜欢STL模板库,自己写那些基础的东西没什么意思了。C++的书太多了,看了几十本还有几百本等着,实在看不过来。现在做软件,就是用Java,C++一般的开发用不到了。不过以前在C++上下的死功夫没有白费,Java用起来心里有底,内存控制的住。
还是挺喜欢Java语言,C++虽然功能强,但有些复杂了,而且没有Java那么丰富的API和开源项目支持。 |
|
返回顶楼 | |
发表时间:2009-12-19
basic c--->simple 00--->stl--->effective c++--->desgin patterns--->templates-meta programming--->boost--->c++ object model
----------------------- c++ object model是很基本的东西,如果真需要排列,放在 simple oo后比较合适。如果需要考虑效率以及资源,内存模型都应该一开始就了解的;即使不需要了解,这个东西也是很简单的。 |
|
返回顶楼 | |
发表时间:2009-12-19
C++的对象模型应该不能算简单吧。。。
虽然算不上复杂。。。-,-但是涉及的东西还是比较多的。。 |
|
返回顶楼 | |
发表时间:2009-12-25
如果觉C++麻烦,你可以使用python啊,然后用c优化,多好啊!
|
|
返回顶楼 | |
发表时间:2009-12-28
ray_linn 写道 wandou 写道 C++倒也不难,只是各种string的转换比较让人厌烦。
呵呵,那只是因为char压根没考虑Unicode的缘故,一般应该用TCHAR而不是Char. CHAR为单字节字符。 WCHAR为Unicode字符, 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。 在Windows下,应该采用Unicode字符而不是ANSI,因为所有的WindowsAPI都是unicode的(你说那些ANSI API,他们只是Unicode的Wrapper). LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。 一张对照表: LPSTR = char * LPCSTR = const char * LPWSTR = wchar_t * LPCWSTR = const wchar_t * LPOLESTR = OLECHAR * = BSTR = LPWSTR(Win32) LPCOLESTR = const OLECHAR * = LPCWSTR(Win32) LPTSTR = _TCHAR * LPCTSTR = const _TCHAR * MC++可以用.net标准的String, 其他C++或者用QT的QString. ole库还定义了一堆string。还有stl的string,bcb的string,产商自己搞的string,百花齐放。要说起来嘛,c++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。 |
|
返回顶楼 | |
发表时间:2009-12-28
wandou 写道 ray_linn 写道 wandou 写道 C++倒也不难,只是各种string的转换比较让人厌烦。
呵呵,那只是因为char压根没考虑Unicode的缘故,一般应该用TCHAR而不是Char. CHAR为单字节字符。 WCHAR为Unicode字符, 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。 在Windows下,应该采用Unicode字符而不是ANSI,因为所有的WindowsAPI都是unicode的(你说那些ANSI API,他们只是Unicode的Wrapper). LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。 一张对照表: LPSTR = char * LPCSTR = const char * LPWSTR = wchar_t * LPCWSTR = const wchar_t * LPOLESTR = OLECHAR * = BSTR = LPWSTR(Win32) LPCOLESTR = const OLECHAR * = LPCWSTR(Win32) LPTSTR = _TCHAR * LPCTSTR = const _TCHAR * MC++可以用.net标准的String, 其他C++或者用QT的QString. ole库还定义了一堆string。还有stl的string,bcb的string,产商自己搞的string,百花齐放。要说起来嘛,c++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。 明显是因为各厂商垃圾么。 |
|
返回顶楼 | |
发表时间:2009-12-28
最后修改:2009-12-28
mikeandmore 写道 wandou 写道 ray_linn 写道 wandou 写道 C++倒也不难,只是各种string的转换比较让人厌烦。
呵呵,那只是因为char压根没考虑Unicode的缘故,一般应该用TCHAR而不是Char. CHAR为单字节字符。 WCHAR为Unicode字符, 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。 在Windows下,应该采用Unicode字符而不是ANSI,因为所有的WindowsAPI都是unicode的(你说那些ANSI API,他们只是Unicode的Wrapper). LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。 一张对照表: LPSTR = char * LPCSTR = const char * LPWSTR = wchar_t * LPCWSTR = const wchar_t * LPOLESTR = OLECHAR * = BSTR = LPWSTR(Win32) LPCOLESTR = const OLECHAR * = LPCWSTR(Win32) LPTSTR = _TCHAR * LPCTSTR = const _TCHAR * MC++可以用.net标准的String, 其他C++或者用QT的QString. ole库还定义了一堆string。还有stl的string,bcb的string,产商自己搞的string,百花齐放。要说起来嘛,c++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。 明显是因为各厂商垃圾么。 应该说define太强大...强大到有点像扁它的味道。 #define MY_LPSTR char * #define MY_LPCSTR const char 一下不就造了2个String? 另外是C++标准走得太慢,比如unicode的支持,迟迟不能决定,也早就了诸多不同的String. 不是厂商垃圾,诸多不符合标准的东西,常常是因为是掌握标准的组织太垃圾,这些名单里有W3C, OpenGL,还是C++ iso |
|
返回顶楼 | |
发表时间:2009-12-28
C++作为 ISO来说 不可能会有类似python这种 battery included的lib。毕竟加一个feature是要投票的。boost搞了这么久也就是个准 iso lib。
|
|
返回顶楼 | |
发表时间:2009-12-29
ray_linn 写道 mikeandmore 写道 wandou 写道 ray_linn 写道 wandou 写道 C++倒也不难,只是各种string的转换比较让人厌烦。
呵呵,那只是因为char压根没考虑Unicode的缘故,一般应该用TCHAR而不是Char. CHAR为单字节字符。 WCHAR为Unicode字符, 如果当前编译方式为ANSI(默认)方式,TCHAR等价于CHAR,如果为Unicode方式,TCHAR等价于WCHAR。 在Windows下,应该采用Unicode字符而不是ANSI,因为所有的WindowsAPI都是unicode的(你说那些ANSI API,他们只是Unicode的Wrapper). LPCSTR和LPSTR没区别,即以零结尾的字符串指针,相当于CHAR *。 一张对照表: LPSTR = char * LPCSTR = const char * LPWSTR = wchar_t * LPCWSTR = const wchar_t * LPOLESTR = OLECHAR * = BSTR = LPWSTR(Win32) LPCOLESTR = const OLECHAR * = LPCWSTR(Win32) LPTSTR = _TCHAR * LPCTSTR = const _TCHAR * MC++可以用.net标准的String, 其他C++或者用QT的QString. ole库还定义了一堆string。还有stl的string,bcb的string,产商自己搞的string,百花齐放。要说起来嘛,c++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。 明显是因为各厂商垃圾么。 应该说define太强大...强大到有点像扁它的味道。 #define MY_LPSTR char * #define MY_LPCSTR const char 一下不就造了2个String? 另外是C++标准走得太慢,比如unicode的支持,迟迟不能决定,也早就了诸多不同的String. 不是厂商垃圾,诸多不符合标准的东西,常常是因为是掌握标准的组织太垃圾,这些名单里有W3C, OpenGL,还是C++ iso 标准是比较保守的才对。 |
|
返回顶楼 | |
发表时间:2009-12-29
mikeandmore 写道 标准是比较保守的才对。
保守阻碍进步,看看W3C对AJAX的阻碍程度(Xmlhttprequest还在扯皮)...OpenGL在ARB这个官僚机构的领导下OpenGL 1.0推出后的相当长一段时间毫无建树,最后被MS牵着鼻子走(见Vertex诉讼); |
|
返回顶楼 | |