类的构造函数

时间:2021-12-21 19:28:40

致读者:此文章是学习笔记,住要目的是了本人巩固知识,因此可能会有错漏,且不建议用来学习,比较适合交流

               此文章代码不可复制来用

 

 

类的基本使用方法

class 名字{

存取关键字(private/public等)

}

实例用法(常见用法)

class Mytext{

char name【10】;

int age;

public:

void print();

}

void Mytext::print()

{

cout<<"Name:";

cin>>name;

}(类外定义时,void 类名字::要定义的函数)

 

一、构造函数

1.作用:初始化类的成员变量

2.形式:类名(参数表)

3.先附上一段实例代码

class MyComplex{

private :

double x,y;

public:

MyComplex(double a,double b)

{

x=a;

y=b;

}

MyComplex(double a);

MyComplex();

};

这里分别为两参数,一参数,无参数的不同构造函数;这种使用方法叫做构造函数的重载;

默认参数的构造函数形式:

MyComplex(double a=0,douuble b=0)

规则:

1.默认的参数值必须一样

2.可以部分默认初始化,不过只能最后一个参数初始化

注意:

当有默认函数参数时,重载需要很谨慎,否则会出现二义性的错误,例子如下:

(1)MyComplex(double a,double b=0);

   MyComplex(double a);

   MyComplex();

如果有一下定义语句:

MyComplex c1;//正确,调用第三个构造函数

MyComplex c2(2.5)//不知道时第一个还是第二个构造函数,此时出现错误

 MyComplex::MyComplex()

{

x=0;y=0

}//类外定义

MyComplex::MyComplex(double a):x(a),y(0)//冒号右边称为初始化列表,进行这样赋值c++编译器可以产生更高效的代码

{};

4.构造函数的运行:

 

构造函数运行时是编译器自己自动运行的,不能进行显示调用

MyComplex c1.MyComplex(2.5,-1);//错误

 

(有构造函数的类)定义时格式必须如下:

类名 对象名(参数表);

对于实例例子中而言,如下定义:

MyComplex c1(2,3),c2(6),c3;//分别调用了第一、第二、第三个构造函数。

 

5.构造函数的总结:

1.构造函数必须是public类型,因为含有构造函数的类是在创造对象之后系统自动调用构造函数的,所以构造函数是依赖于对象使用的,而任何成员只要是通过对象使用就属于类外使用。

2.定义类时,如果没有构造函数,系统本身会给一个默认的构造函数,该函数是空的,不做任何操作。