【发布时间】:2012-12-09 19:14:48
【问题描述】:
看看这个类:
TTest = class(TObject)
public
constructor Create(A:Integer);overload;
constructor Create(A,B:Integer);overload;
end;
现在当我们要使用类时:
var
test: TTest;
begin
test:= TTest.Create; //this constructor is still visible and usable!
end;
谁能帮我隐藏这个构造函数?
【问题讨论】:
-
为什么要这样做?你想达到什么目的?
-
+1。我以为以前有人问过这个问题,但我发现的唯一问题几乎没有像这个那样简洁。
-
@Marjan Venema:很明显我想做一个标准的类,我的类不应该有这个默认的构造函数。
-
我倾向于不反对我正在使用的语言/框架。只需用 reintroduce 声明它(有效地隐藏默认值)。它是否抛出异常和/或将其标记为已弃用?如果编译器接受了已弃用的内容,那么您将收到编译时警告,否则会出现运行时异常。但我看到大卫刚刚用一些有趣的想法扩展了他的答案。
-
Deprecated 非常好。你可以让编译器阻止它。
标签: delphi constructor default-constructor