论坛首页 编程语言技术论坛

我对C++复杂性的一些认识

浏览 18370 次
精华帖 (0) :: 良好帖 (15) :: 新手帖 (1) :: 隐藏帖 (2)
作者 正文
   发表时间:2009-12-19  
我开始也用C++,特别喜欢指针,觉得对内存控制力超强。第二喜欢STL模板库,自己写那些基础的东西没什么意思了。C++的书太多了,看了几十本还有几百本等着,实在看不过来。现在做软件,就是用Java,C++一般的开发用不到了。不过以前在C++上下的死功夫没有白费,Java用起来心里有底,内存控制的住。

还是挺喜欢Java语言,C++虽然功能强,但有些复杂了,而且没有Java那么丰富的API和开源项目支持。
0 请登录后投票
   发表时间:2009-12-19  
basic c--->simple 00--->stl--->effective c++--->desgin patterns--->templates-meta programming--->boost--->c++ object model
-----------------------
c++ object model是很基本的东西,如果真需要排列,放在 simple oo后比较合适。如果需要考虑效率以及资源,内存模型都应该一开始就了解的;即使不需要了解,这个东西也是很简单的。
0 请登录后投票
   发表时间:2009-12-19  
C++的对象模型应该不能算简单吧。。。
虽然算不上复杂。。。-,-但是涉及的东西还是比较多的。。
0 请登录后投票
   发表时间:2009-12-25  
如果觉C++麻烦,你可以使用python啊,然后用c优化,多好啊!
0 请登录后投票
   发表时间: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++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。
0 请登录后投票
   发表时间: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++还真是个垃圾。可惜很多时候,只有靠这个垃圾才能骗更多的工资。

明显是因为各厂商垃圾么。
0 请登录后投票
   发表时间: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
0 请登录后投票
   发表时间:2009-12-28  
C++作为 ISO来说 不可能会有类似python这种 battery included的lib。毕竟加一个feature是要投票的。boost搞了这么久也就是个准 iso lib。
0 请登录后投票
   发表时间: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

标准是比较保守的才对。
0 请登录后投票
   发表时间:2009-12-29  
mikeandmore 写道
标准是比较保守的才对。



保守阻碍进步,看看W3C对AJAX的阻碍程度(Xmlhttprequest还在扯皮)...OpenGL在ARB这个官僚机构的领导下OpenGL 1.0推出后的相当长一段时间毫无建树,最后被MS牵着鼻子走(见Vertex诉讼);
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics