yzx99

导航

 

“构造函数是与类同名的特殊成员函数。当声明类的对象时,构造函数被自动调用以实现对该对象的初始化,因此构造函数必须是公有的成员函数。”
构造函数的返回值是什么类型的?我看了一下,居然没有类型,也void都不必声明,
是有点特殊。如果我们试着用void来画蛇添足地声明一下看编译器提示什么?

using System;

class m
{
 
static void Main()
 
{
  point p
=new point();
 }

}


class point
{
 
public void point() { }
}

编译结果:
p.cs(13,14): error CS0542: “point”: 成员名称不能与它们的封闭类型相同
p.cs(11,7): (与前一个错误相关的符号位置)
即它先认为void point是一个普通成员函数,但它不能与类同名。
试这一点时,我遇到一个问题:本来每个语句都要用分号结束,但这里,却不能写成
public point() { };
编译结果:
p.cs(13,20): error CS1597: 方法或访问器块后面的分号无效
这一点从理论上应该如何说明?特别是与enum的结构进行对比。

另一种写法:public point();,编译结果
p.cs(13,10): error CS0501: “point.point()”必须声明主体,因为它未标记为abstract 或 extern

如果构造函数是private的将会如何?

using System;

class m
{
 
static void Main()
 
{
//  point p=new point();
 }

}


class point
{
 
private point() { }
}

如果注释第7行,编译是没问题的,但一个类连构造函数都是私有,它活着还有什么意义?(后来发现还真的有这种类(如Math类),这种构造函数称为“私有构造函数”,通常用在只包含静态成员的类中。看来我的公共子程序可以放在静态类中了,不错不错)
如果构造函数不显式地声明为public,则它默认是private的,这一点,与前面测试的
结果是一样的。

posted on 2008-05-25 17:18  yzx99  阅读(685)  评论(0编辑  收藏  举报