c++是面向对象的编程语言
面对对象就是:
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多 数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
把数据及对数据的操作方法放在一起,作为一个相互依存的整体——对象。对同类对象抽象出其共性,形成类。类中的大多 数数据,只能用本类的方法进行处理。类通过一个简单的外部接口与外界发生关系,对象与对象之间通过消息进行通信。程序流程由用户在使用中决定。
类的声明
class+类名
{
访问修饰符:(public/private/protected) 类的成员变量;
访问修饰符: 类的成员函数
};
注 :
1.首先是public修饰符来修饰的函数,是指这个函数可以被其他的类来调用,也可以被自己类里的函数来调用。
2.再看protected修饰符来修饰的函数,是指这个函数可以被继承类调用,也可以被自己类里的函数调用,但不能被其他的类调用。
3.用private修饰符来修饰的函数,就具有更少的权限了,只能被自己类里的其他函数调用,其他一概不能调用。(访问修饰符范围是到定义的下一个访问修饰符 或是整个类的结束)
若在定义变量前面没有任何访问修饰符会默认其访问修饰符为public
如果我们想要在外部调用类内的私有的或受保护的成员变量那么我们就需要一系列的接口函数
class Cperson
{
public:string name;
private:int age;
protected:bool sex;
public:
int getage()
{
return age;//得到年龄的接口函数如果我们在类外想要访问类内的私有的或受保护的成员变量就要调用接口函数
}
bool getsex()
{
return sex;
}
void setage(int age1)//调用接口函数间接给类的成员变量赋值
{
age=age1;
}
};
接口就是与外界交互的通道
类的构造函数 :给函数的成员属性进行初始化 构造函数的函数名与类名相同 构造函数分为有参数和没有参数两种类型
没有参数的构造函数:
class Cperson
{
public:string name;
private:int age;
protected:bool sex;
public:
Cperson()//没有参数的构造函数
{ name="leilei";
age=0;
sex=1;
}
Cperson(string name1,int age1,bool sex1)//有参数的构造函数
{ name=name1;
age=age1;
sex=sex1;
}
int getage()
{
return age;//得到年龄的接口函数如果我们在类外想要访问类内的私有的或受保护的成员变量就要调用接口函数
}
bool getsex()
{
return sex;
}
void setage(int age1)//调用接口函数间接给类的成员变量赋值
{
age=age1;
}
};
int getage()
{
return age;//得到年龄的接口函数如果我们在类外想要访问类内的私有的或受保护的成员变量就要调用接口函数
}
bool getsex()
{
return sex;
}
void setage(int age1)//调用接口函数间接给类的成员变量赋值
{
age=age1;
}
};
//在上述的类里我们定义了两个构造函数那么我们在定义的时候怎么区分这两个构造函数呢?
int main()
{ Cperson pp;//这是调用的是没有参数的构造函数;
Cperson pp1("leilei",12,1);//这时调用的是有参数的构造函数我们可能写很多个有参数的构造函数那么我们就用定义对象的时 //候的参数来区分调用的到底是哪一个构造函数
return 0;
}//声明对象的时候会自动调用构造函数 如果我们没有定义构造函数那么会调用一个默认的没有参数的构造函数 Cperson(){};
注意 如果我们只写了一个有参数的构造函数那么就没有默认的无参的构造函数 定义对象的时候需要注意
析构函数
自动调用删除类内指针成员在堆区分配的空间 析构函数一个类只有一个没写也有默认的但是什么也不做
class Cperson
{
public:string name;
char* psz;//
类内成员有指针
private:int age;
protected:bool sex;
public:
Cperson()//没有参数的构造函数
{ name="leilei";
psz=new char[10];//在堆区分配空间
strcpy_s(psz,10,"aaaaaa")//初始化
age=0;
sex=1;
}
~Cperson()//
定义析构函数 析构函数调用是在类的生命周期结束的时候回收对象清理内存
{ delete[]psz;
psz=0;}
int getage()
{
return age;//得到年龄的接口函数如果我们在类外想要访问类内的私有的或受保护的成员变量就要调用接口函数
}
bool getsex()
{
return sex;
}
void setage(int age1)//调用接口函数间接给类的成员变量赋值
{
age=age1;
}
};
int getage()
{
return age;//得到年龄的接口函数如果我们在类外想要访问类内的私有的或受保护的成员变量就要调用接口函数
}
bool getsex()
{
return sex;
}
void setage(int age1)//调用接口函数间接给类的成员变量赋值
{
age=age1;
}
};