今天一同事闲时看了一些C++代码,于是问我 new 一个类型时后面加括号和不加括号有什么区别?如下:A* test1 = new AA* test2 = new A( ) 我竟一时答不上来。 后来查阅了一些资料,整理出一些结论,正确与否,还需认证。对于自定义的类型,两种写法是一致的。而对于内建类型,区别在于调用的构造函数不一样,例如:int* a = new int ; // a 的值不确定 int* b = new int(); // b的值被初始化为0 对于此种情况,后者比前者多了一个 memset 。 在CSDN的论坛上,也有关于这个问题的争议,不够貌似还没有最后的结论。本文转自http Read More
posted @ 2013-07-18 22:57 迷路君的博客 Views(114) Comments(0) Diggs(0) Edit
今天在csdn看到有人出了一道考数组长度的问题,感觉挺不错的,稍稍归纳一下,记录在案。chartest[]={0x01,0x02,0x03}; int a =strlen(test);intb=sizeof(test); 则 a值为不确定值,因为 strlen 判断字符串结束的标志是指针走到值为 '\000' 的地址处,'\000' 在十六进制里的表示就是 0x00。 b 值为 3,sizeof是返回变量所占内存数。 若chartest[]={0x01,0x00,0x03}; 则 a = 1 因为 0x00 为字符串结束符。b依然为3。 若chartest[20 Read More
posted @ 2013-07-18 22:53 迷路君的博客 Views(215) Comments(0) Diggs(0) Edit