TStringList和TStringList() 区别

castlooo 2008-12-04 10:49:05
TStrings* s1 = new TStringList;

TStrings* s1 = new TStringList();

都能编译过,他们俩有什么区别?
...全文
199 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
僵哥 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 PPower 的回复:]
例子雖然是錯誤的,但對理解這個問題有幫助。
[/Quote]
个人不觉得有多少帮助,反过来更难理解。

其实对于这个问题,对于不需要参数(或者说参数为void)或者参数全部使用默认值的时候是等价的。
我来看看CB 2008-12-11
  • 打赏
  • 举报
回复
差不多
勉励前行 2008-12-10
  • 打赏
  • 举报
回复
写个例子,加深理解:
class A
{
int f ;
public :
A(int a = 0):f(a){}
A():f(-1){}
};
A *p1 = new A ; //调用哪个构造函数?
A *p2 = new A() ;//调用哪个构造函数?
勉励前行 2008-12-10
  • 打赏
  • 举报
回复
例子雖然是錯誤的,但對理解這個問題有幫助。
僵哥 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 PPower 的回复:]
写个例子,加深理解:
class A
{
int f ;
public :
A(int a = 0):f(a){}
A():f(-1){}
};
A *p1 = new A ; //调用哪个构造函数?
A *p2 = new A() ;//调用哪个构造函数?
[/Quote]

如果把这个写全了的话,应该是:

class A 
{
int f ;
public :
A(int a = 0):f(a){}
A(void):f(-1){}
};




僵哥 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 PPower 的回复:]
写个例子,加深理解:
class A
{
int f ;
public :
A(int a = 0):f(a){}
A():f(-1){}
};
A *p1 = new A ; //调用哪个构造函数?
A *p2 = new A() ;//调用哪个构造函数?
[/Quote]
这个并不能说明问题,而这个示例实际上会导致编译器无法选择具体被调用的构造函数。
Felix.Peng 2008-12-09
  • 打赏
  • 举报
回复
多态,2个不同的构造函数而已!
踏岸寻柳 2008-12-09
  • 打赏
  • 举报
回复
第一种:仅调用缺省构造函数;
第二种:如果()内有数据的话就调用相应的构造函数。

不过lz说的情况对编译器而言,是一回事儿。
tjg5202 2008-12-09
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jaffy 的回复:]
缺省构造函数
[/Quote]......
xjq2003 2008-12-05
  • 打赏
  • 举报
回复
没有什么本质区别吧
springworker 2008-12-05
  • 打赏
  • 举报
回复
学习
My_Love 2008-12-05
  • 打赏
  • 举报
回复
给LZ来个难点的:
int *P = new int(4); //正确吗?吗意思?
int *Q = new int[4]; //正确吗?吗意思?
jxw1987628 2008-12-05
  • 打赏
  • 举报
回复
// 嗯
jaffy 2008-12-05
  • 打赏
  • 举报
回复
缺省构造函数
jacknes009 2008-12-05
  • 打赏
  • 举报
回复
1LZJ

前者会调用不带参数的构造函数,等同后者。但是后者更准确。

yuanreid 2008-12-04
  • 打赏
  • 举报
回复
前者会调用不带参数的构造函数,等同后者。但是后者更准确。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧