赞
踩
类的定义是面向对象编程中的基本概念,它描述了一类具有相同属性和方法的对象的抽象模板。类定义了对象的结构和行为,包括数据成员(属性)和成员函数(方法)。通过类,可以创建多个具有相同属性和方法的对象实例,从而实现代码的复用和模块化。类的定义通常包括类名、数据成员和成员函数的声明,以及可能的访问控制修饰符来指定成员的访问权限。
访问限定符用于控制类成员的访问权限,如private、protected和public等,它们决定了哪些代码可以访问类的属性和方法。封装则是将类的属性和方法隐藏在其内部,只通过公共接口与外部交互,从而保护数据不被外部直接访问和修改,提高代码的安全性和可维护性。通过访问限定符和封装,可以实现更好的代码封装和信息隐藏,提高程序的模块化和可重用性。
类的定义是面向对象编程的基础,它描述了具有相同属性和行为的对象的抽象模板。在类中,我们可以定义数据成员(属性)和成员函数(方法),这些成员共同构成了类的状态和行为。
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
class
为定义类的关键字,ClassName
为类的名字,{}
中为类的主体,注意类定义结束时后面分号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者成员函数。
.h
文件中,成员函数定义放在.cpp
文件中::
一般情况下,更期望采用第二种方式。
成员变量的命名应遵循以下建议:
使用有意义的名称:变量名应该能够清晰地描述其含义和用途。应该避免使用无意义的单词或缩写,以免给其他开发人员带来困惑。
使用驼峰命名法:变量名应使用驼峰命名法,即第一个单词的首字母小写,后续单词的首字母大写。例如,firstName
、lastName
。
避免使用缩写:除非广为人知并且相对简洁,否则应尽量避免使用缩写。使用完整的单词可以增加代码的可读性。
使用具体的名称:变量名应该直观地反映该变量所表示的内容。例如,使用customerName
而不是name来表示客户的姓名。
遵循命名约定:在开发团队中,应统一遵循一套命名约定。例如,使用下划线作为私有变量的前缀,或者使用前缀或后缀来区分变量的类型(如strName
表示字符串类型的变量)。
避免使用保留字:变量名不能与编程语言中的保留字冲突。在选择变量名时,应避免使用关键字和内置函数的名称。
使用英文:英文是编程界的通用语言,应尽量使用英文来命名变量,以便其他开发人员可以更容易地理解代码。
最重要的是,变量的命名应该具有一致性和可读性,并且能够准确地反映其含义和用途。这有助于提高代码的可维护性和可理解性。
class Date { public: void Init(int year) { // 这里的year到底是成员变量,还是函数形参? year = year; } private: int year; };//使用这种函数进行初始化,初始化是不会成功的,是因为局部优先 // 所以一般都建议这样 class Date { public: void Init(int year) { _year = year; } private: int _year; }; // 或者这样 class Date { public: void Init(int year) { year_ = year; } private: int year_; }; // 或者这样 class Date { public: void Init(int year) { mYear = year; } private: int mYear; }; // 其他方式也可以的,主要看你未来公司要求。一般都是加个前缀或者后缀标识区分就行。
C++中有三种访问限定符,分别是public
、protected
和private
。这些访问限定符用于控制类的成员的访问权限。
public
:公共访问限定符,被声明为public
的成员可以在类的内部和外部被访问到。这意味着可以在任何地方访问该成员。
protected
:保护访问限定符,被声明为protected
的成员可以在类的内部被访问到,但不能在类的外部被直接访问。但是,它可以被继承该类的派生类访问。
private
:私有访问限定符,被声明为private
的成员只能在类的内部被访问到,不能在类的外部和派生类中被直接访问。
访问限定符的默认访问级别取决于类的声明:
private
。public
。例如,下面是一个使用访问限定符的类的示例:
class MyClass {
public:
int publicVar; // 可以在类的内部和外部访问到
protected:
int protectedVar; // 可以在类的内部访问到,派生类也可以访问到
private:
int privateVar; // 只能在类的内部访问到
};
注意,访问限定符的目的是为了控制类的成员的访问权限,以保护数据的完整性和安全性,并且提供封装性。
C++实现封装的方式:用类将对象的属性与方法结合在一块,让对象更加完善,通过访问权限选择性的将其接口提供给外部的用户使用。
public
修饰的成员在类外可以直接被访问protected
和private
修饰的成员在类外不能直接被访问(此处protected
和private
是类似的)}
即类结束。class
的默认访问权限为private
,struct
为public
(因为struct
要兼容C)注意:访问限定符只在编译时有用,当数据映射到内存后,没有任何访问限定符上的区别
C++出现访问限定符是为了加强对类成员的访问控制,从而提高程序的安全性和可维护性。访问限定符可以限制外部的访问权限,防止无关的代码对类成员进行直接访问和修改,从而避免了意外的错误和数据不一致性。假如没有访问限定符可能会出现下面的场景,因为世界上的人口千千万,你制定了一个规则,不可能所有的人都会根据你所制定的规则去执行,总是会有一些特立独行的人,这时候就需要你用严厉的手段去强迫哪些人去执行你的规则。
访问限定符包括public
、private
和protected
三种,分别用于指定成员的访问权限。public
成员可以被类外部的代码访问,private
成员只能在类内部的成员函数中访问,protected
成员可以在类内部的成员函数和其子类中访问。通过使用这些访问限定符,可以明确规定哪些成员是对外公开的,哪些是内部实现细节,从而提高了程序的模块化和封装性。
访问限定符还可以用于实现类的封装,隐藏类的内部实现细节,只暴露必要的接口给外部使用。这样可以有效地保护类的数据和实现细节,防止外部代码的错误操作和非法访问。
另外,访问限定符也对继承关系起到了重要的作用。子类继承了父类的成员,但是访问限定符可以控制子类对父类成员的访问权限。这样可以在保持继承关系的同时,限制对继承成员的访问范围,提高了程序的灵活性和安全性。
总之,C++出现访问限定符是为了提高程序的安全性、可维护性和灵活性,通过明确规定成员的访问权限,实现对类成员的访问控制和类的封装。
C++中struct
和class
的区别是什么?
解答:C++需要兼容C语言,所以C++中struct
可以当成结构体使用。另外C++中struct
还可以用来定义类。和class
定义类是一样的,区别是struct
定义的类默认访问权限是public
,class
定义的类默认访问权限是private
。注意:在继承和模板参数列表位置,struct
和class
也有区别,后序文章给大家介绍。
面向对象的三大特性:封装、继承、多态。
C++的封装是一种面向对象的编程特性,它允许将数据和对数据的操作封装在一个类中,使得数据和操作与外部代码隔离,并提供了访问和修改数据的接口。
C++的封装通过类的访问修饰符来实现。一个类可以包含公有、私有和保护三种类型的成员,其中公有成员可以被类的外部代码直接访问,私有成员只能在类的内部访问,而保护成员则只能在类的内部和其派生类中访问。
封装的优点包括:
以下是一个使用封装的示例:
class Rectangle { private://私有 int width; int height; public://公有 void setWidth(int w) { if (w > 0) { width = w; } } void setHeight(int h) { if (h > 0) { height = h; } } int getWidth() { return width; } int getHeight() { return height; } int getArea() { return width * height; } }; int main() { Rectangle rect; rect.setWidth(5); rect.setHeight(3); int area = rect.getArea(); cout << "Area: " << area << endl; return 0; }
在上面的示例中,Rectangle
类封装了宽度和高度两个私有成员变量,以及设置和获取这两个成员变量的公有成员函数。外部代码通过这些公有成员函数来访问和修改类的数据。
在类和对象阶段,主要是研究类的封装特性,那什么是封装呢?
封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互。
封装本质上是一种管理,让用户更方便使用类。比如:对于电脑这样一个复杂的设备,提供给用户的就只有开关机键、通过键盘输入,显示器,USB插孔等,让用户和计算机进行交互,完成日常事务。但实际上电脑真正工作的却是CPU、显卡、内存等一些硬件元件。
对于计算机使用者而言,不用关心内部核心部件,比如主板上线路是如何布局的,CPU内部是如何设计的等,用户只需要知道,怎么开机、怎么通过键盘和鼠标与计算机进行交互即可。因此计算机厂商在出厂时,在外部套上壳子,将内部实现细节隐藏起来,仅仅对外提供开关机、鼠标以及键盘插孔等,让用户可以与计算机进行交互即可。
在C++语言中实现封装,可以通过类将数据以及操作数据的方法进行有机结合,通过访问权限来隐藏对象内部实现细节,控制哪些方法可以在类外部直接被使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。