类和对象的基本概念
- C和C++中struct区别
- 类的封装
- 封装
- 访问权限
- 总结
- struct和class的区别
- 将成员变量设置为private
C和C++中struct区别
- C语言struct只有变量
- C++语言struct 既有变量,也有函数
类的封装
封装
- 把变量(属性)和函数(操作)合成一个整体,封装在一个类中
- 对变量和函数进行访问控制
访问权限
- 在类的内部(作用域范围内),没有访问权限之分,所有成员可以相互访问
- 在类的外部(作用域范围外),访问权限才有意义:public,private,protected
- 在类的外部,只有public修饰的成员才能被访问,在没有涉及继承与派生时,
总结
//封装两层含义
//1. 属性和行为合成一个整体
//2. 访问控制,现实事物本身有些属性和行为是不对外开放
class Person{
//人具有的行为(函数)
public:void Dese(){ cout << "我有钱,年轻,个子又高,就爱嘚瑟!" << endl;}
//人的属性(变量)
public:int mTall; //多高,可以让外人知道
protected:int mMoney; // 有多少钱,只能儿子孙子知道
private:int mAge; //年龄,不想让外人知道
};int main(){Person p;p.mTall = 220;//p.mMoney 保护成员外部无法访问//p.mAge 私有成员外部无法访问p.Dese();return EXIT_SUCCESS;
}
类是一个数据类型,类是抽象的
对象是一个具体的变量,占用内存空间。
struct和class的区别
class默认访问权限为private,struct默认访问权限为public
class A{int mAge;
};
struct B{int mAge;
};void test(){A a;B b;//a.mAge; //无法访问私有成员b.mAge; //可正常外部访问
}
将成员变量设置为private
- 可赋予客户端访问数据的一致性。
- 可细微划分访问控制。
class AccessLevels{
public://对只读属性进行只读访问int getReadOnly(){ return readOnly; }//对读写属性进行读写访问void setReadWrite(int val){ readWrite = val; }int getReadWrite(){ return readWrite; }//对只写属性进行只写访问void setWriteOnly(int val){ writeOnly = val; }
private:int readOnly; //对外只读访问int noAccess; //外部不可访问int readWrite; //读写访问int writeOnly; //只写访问
};