一、继承中的构造函数
1.基本概念
当申明一个子类对象时,先执行父类的构造函数,再执行子类构造函数。
(注意:父类的无参构造很重要;子类可以通过base关键字 代表父类 调用父类构造)
构造函数:实例化对象调用的函数,主要用来初始化成员变量。每个类 都会有一个默认的无参构造函数。
其语法为
访问修饰符 类名()
{
}
注意点:不写返回值 ,函数名与类名相同,访问修饰符根据需求而定一般为public,构造函数可以重载,可以用this语法重用代码。 有参函数会顶掉默认的无参构造,如果想保留无参构造需重载出来。
class Test
{
public int test1;
public string test2;
public Test() //无参构造
{
}
public Test(int i)
{
this.test1 = i;
}
public Test(int i, string str) : this(i) //外部经行两个构造重载时,先调用后面指定的this(即调用public Test(int i))
{
this.test2 = str;
}
}
2.继承中构造函数执行顺序
父类的父类的构造-------》父类构造-----------》子类构造
3.父类的无参构造函数
(无参函数省略时,父类使用的有参函数,在子类继承时显示报错)
子类实例化时,默认自动调用的是父类的无参构造,所以如果父类的无参构造被有参函数顶掉,显示报错
4.通过base调用指定父类构造
class Test
{
// public Test() //无参构造
//{
//}
public Test(int i)
{
Console.WriteLine("Test");
}
}
class Player : Test
{
public Player(int i) : base(i) //当父类的无参构造没有时可以通过base调用父类有参构造。 (base里的参数要与其调用的参数保持一致
{
Console.WriteLine("Player");
}
}
二、C里面的指针
1.基本功能:交换数值
#include <stdio.h>
void swap(int *pa,int *pb);
int main(){
int a=5;
int b=3;
swap(&a,&b);//把a的地址赋给*pa
printf("%d %d",a,b); //结果实现对换
return 0;
}
void swap(int *pa,int *pb){
int t=*pa;
*pa=*pb;
*pb=t;
}