A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© honeys天空s 中级黑马   /  2013-11-29 22:11  /  1236 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 honeys天空s 于 2013-11-30 16:26 编辑

复制构造函数是什么意思?这个词挺陌生的,怎么使用它?

6 个回复

倒序浏览

  1. public class Taxi
  2. {
  3. public Taxi()
  4. {
  5. console.writeline("这个函数");
  6. }
  7. }

  8. static void Main()
  9. {
  10. Taxi t = new Taxi();
  11. consol.readkey();
  12. }
复制代码


使用一个简单的构造函数定义了名为 Taxi 的类。然后使用 new运算符来实例化该类。在为新对象分配内存之后,new运算符立即调用 Taxi 构造函数。
构造函数具有与类相同的名称,它通常初始化新对象的数据成员
回复 使用道具 举报 1 0
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class Person
{
   private string name;
   private int age;
   //Copy constructor.
    publicPerson(Person previousPerson)
    {
        name= previousPerson.name;
       age = previousPerson.age;
    }
    //Instance constructor.
    publicPerson(string name, int age)
    {
       this.name = name;
       this.age = age;
    }
    // Getaccessor.
    publicstring Details
    {
        get
        {
           return name + " is " + age.ToString();
        }
    }
}
class TestPerson
{
    staticvoid Main()
    {
        //Create a new person object.
       Person person1 = new Person("George", 40);
        //Create another new object, copying person1.
       Person person2 = new Person(person1);
       System.Console.WriteLine(person2.Details);
    }
}
输出结果:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
George is 40

回复 使用道具 举报
听错了吧   应该是赋值构造函数吧   构造函数就是初始化对象 对属性赋初始值
回复 使用道具 举报
为梦而生 发表于 2013-11-29 22:19
使用一个简单的构造函数定义了名为 Taxi 的类。然后使用 new运算符来实例化该类。在为新对象分配内存之后 ...

恩恩 构造函数的名称应该与类名称必须相同吧
回复 使用道具 举报
〆、单曲循环 发表于 2013-11-30 09:59
听错了吧   应该是赋值构造函数吧   构造函数就是初始化对象 对属性赋初始值 ...

没错,我说的就是复制构造函数 我也感觉挺陌生所以问问
回复 使用道具 举报
Coding 中级黑马 2013-11-30 18:08:13
7#
当我们创建一个类的时候,会默认的有一个“默认构造函数”,C#复制构造函数仍然属于构造函数,不同的是以类本身作为参数的数据类型。
调用构造函数时,参数必须是已经创建的类实例。
  1.   class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             //使用默认构造函数创建示例,并给各个属性赋值
  6.             UserInfo uInfo1 = new UserInfo();   
  7.             uInfo1.Name = "Coding";
  8.             uInfo1.Sex = true;
  9.             uInfo1.Age = 24;

  10.             //使用C#复制构造函数创建示例,但是需要注意的是这并非是对uInfo1的引用,同样是创建了新的实例
  11.             UserInfo uInfo2 = new UserInfo(uInfo1);
  12.             Console.WriteLine("用户名:{0},性别:{1},年龄:{2}",uInfo2.Name,uInfo2.Sex,uInfo2.Age);   
  13.             Console.ReadLine();   
  14.         }
  15.     }
  16.     //UserInfo 用户信息
  17.     class UserInfo   
  18.     {
  19.         /// <summary>
  20.         /// 用户名称
  21.         /// </summary>
  22.         public string Name { get; set; }

  23.         /// <summary>
  24.         /// 性别
  25.         /// </summary>
  26.         public bool Sex { get; set; }
  27.         
  28.         /// <summary>
  29.         /// 年龄
  30.         /// </summary>
  31.         public int Age { get; set; }

  32.         //默认构造函数
  33.         public UserInfo()  
  34.         {

  35.         }
  36.         //复制构造函数,以类实例作为参数的构造函数
  37.         public UserInfo(UserInfo uInfo)
  38.         {
  39.             this.Name = uInfo.Name;
  40.             this.Sex = uInfo.Sex;
  41.             this.Age = uInfo.Age;
  42.         }
  43.     }
复制代码

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马