C++面向对象的三大特性为:封装,继承,多态。
1.封装封装的意义:
1.将属性和行为作为一个整体,表现生活中的事物
2.将属性和行为加以权限控制。
语法:class类名{访问权限:属性/行为};
constdoublePI=.14;//class代表设计一个类classCircle{//访问权限public://公共权限//属性intm_r;//行为//获取圆的周长doublecalcu(){return2*PI*m_r;}}intmain(){//通过圆类创建一个具体的圆(对象)Circlec1;c1.m_r=10;cout"圆的周长:"c1.calcu()endl;}2.类的权限
classStudent{//访问权限public://公共权限//属性stringname;//成员属性,成员变量intage;//命名权限voidSetName(stringLname){//成员方法,成员函数name=Lname;}}intmain(){//通过学生类创建一个具体的学生(对象)Studentstu1;//通过函数更改学生姓名stu1.SetName("张三");}
//类在设计时,可以把属性和行为放在不同的权限下,加以控制访问权限有三种:1.public公共权限2.protected保护权限.private私有权限//公共权限public类内可以访问类外也可以访问//保护权限protected类内可以访问类外不可以访问继承中子类可以访问父类的,对于私有的父类不能让子类继承//私有权限private类内可以访问类外不可以访问classPerson{public:stringname;protected:stringcar;private:intPassword;public:voidfunc(){//不管什么权限,在类内都可以访问name="张三";car="拖拉机";Password=;}}intmain(){Personp1;p1.name="李四";p1.car="奔驰";//错误类外是不可访问protected权限p1.Password=12;//错误类外是不可以访问private权限p1.func();//可以通过类内的函数去调用类外不可访问的属性或函数}.struct和class的区别
struct默认的权限是公共public
class默认的权限是私有private
4.成员属性设置为私有优点1:将所有成员属性设置为私有,可以自己控制读写权限
优点2:对于写权限,我们可以检测数据的有效性
classPerson{private:stringn_name;//可读可写intage;//只读stringc_car;//只写public:voidsetName(stringname){n_name=name;}stringgetName(){returnn_name;}intgetAge(){age=0;//初始returnage;}voidsetCar(stringcar){c_car=car;}}intmain(){Personp1;p1.setName("张三");//写coutp1.getName()endl;//读coutp1.getAge()endl;//读p1.setCar("奔驰");//写}5.全局函数和成员函数
//分别利用全局函数和成员函数判断正方形是否相等//只有正方形的长宽高相等就代表正方形相等classCube{private:intm_L;//长intm_W;//宽intm_H;//高public://设置长voidsetL(intL){m_L=L;}//获取长intgetL(){returnm_L;}//设置宽voidsetW(intw){m_W=w;}//获取宽intgetW(){returnm_W;}//设置高voidsetH(intH){m_H=H;}//获取高intgetH(){returnm_H;}boolisSame(Cubec){//采用引用的方式,节省内存空间if(m_L==c.getL()m_W==c.getW()m_H==c2.getH()){return1;}else{return0;}}}boolisSame(Cubec1,Cubec2){//采用引用的方式,节省内存空间if(c1.getL()==c2.getL()c1.getW()==c2.getW()c1.getH()==c2.getH()){return1;}else{return0;}}voidmain(){Cubec1;c1.setL(10);c1.setW(10);c1.setH(10);Cubec2;c2.setL(10);c2.setW(10);c2.setH(10);//调用全局函数判断if(isSame(c1,c2)){cout"正方形相同"endl;}else{cout"正方形不相同"endl;}//调用成员函数判断intrel=c1.isSame(c2);if(rel){cout"正方形相同"endl;}else{cout"正方形不相同"endl;}}
#编程语言#