• 构造函数


    “构造函数是与类同名的特殊成员函数。当声明类的对象时,构造函数被自动调用以实现对该对象的初始化,因此构造函数必须是公有的成员函数。”
    构造函数的返回值是什么类型的?我看了一下,居然没有类型,也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的,这一点,与前面测试的
    结果是一样的。

  • 相关阅读:
    NVelocity模板引擎用法之模板中直接调用类的方法
    GridView的编辑,更新,取消,删除等功能演示
    页面加载后检查用户登录状态,通过ajax实现
    通过ajax方式实现用户名存在性检查
    各个大神大公司的UED
    ASP.NET中的DataView用法详解
    周期三角脉冲信号的生成_Matlab实现
    课后题:冲激函数习题讨论
    [KeilC51] 有关出栈时sp原子性的疑虑
    [KeilC51]软件简单PWM波生成
  • 原文地址:https://www.cnblogs.com/yzx99/p/1206955.html
Copyright © 2020-2023  润新知