致读者:此文章是学习笔记,住要目的是了本人巩固知识,因此可能会有错漏,且不建议用来学习,比较适合交流
此文章代码不可复制来用
类的基本使用方法
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.定义类时,如果没有构造函数,系统本身会给一个默认的构造函数,该函数是空的,不做任何操作。