面向过程(Procedure Oriented Programming,POP)是将程序视为一系列的过程或函数的集合。在面向过程的编程中,程序的执行流程主要由函数的调用和控制流语句(如条件语句和循环语句)组成。面向过程编程通常关注解决问题的步骤和操作,以过程或函数为单位进行组织和实现。这种编程范式适用于简单的、直接的问题和算法,它注重顺序性和线性执行,即按照特定的顺序执行一系列的函数。数据和函数之间的联系较弱,函数通常使用全局变量或参数传递数据。面向过程编程适用于程序结构相对简单、不需要过多协作和抽象的情况,它可以提供较好的性能和效率。
面向对象(Object Oriented Programming,OOP)则是一种将事物分解成为一个个对象,然后由对象之间分工与合作的编程范式。在面向对象程序开发思想中,每一个对象都是功能中心,具有明确的分工。面向对象编程关注问题的本质,通过不同对象之间的调用和相互协作来解决问题。这种编程范式提供了高度的灵活性、可维护性和扩展性,适合处理复杂的程序设计和大型项目。
注意:不只有三个特性
在C++中,类(Class)是一种用户定义的类型(User-Defined Type, UDT),它通常包含数据成员(通常称为类的属性或字段)和成员函数(通常称为类的方法或操作)。类允许我们创建具有共同属性和行为的对象。
C++中的类与C语言中的结构体(Struct)在概念上有一些相似之处,但也存在显著的区别:
在C++中,类的数据成员(属性)通常是私有的(尽管默认情况下是公有的,但程序员通常会选择将它们设为私有),这意味着只有类的成员函数(方法)可以直接访问这些数据。这种封装有助于隐藏类的内部状态,只暴露必要的接口给类的使用者。
相比之下,C语言的结构体通常没有封装性,它的成员都是公开的,可以被外部代码直接访问(不安全)。
C++的类可以包含成员函数,这些函数定义了对象可以执行的操作。
结构体在C语言中也可以包含函数指针,但这与C++的成员函数在概念和使用上有很大的不同。
C++的类支持面向对象编程的三大特性:封装、继承和多态。这意味着一个类可以继承另一个类的属性和方法,并且可以覆盖(或称为“重写”)父类的方法以实现多态。
C语言的结构体不支持这些特性。
C++的类可以有构造函数和析构函数,这些特殊的成员函数在对象创建和销毁时自动调用。它们用于初始化对象的状态和释放对象的资源。
C语言的结构体没有这样的机制。
总的来说,C++的类在功能上比C语言的结构体更强大和灵活。然而,从语法的角度来看,C++的类与C语言的结构体在定义上非常相似,因为类的成员(包括数据成员和成员函数)都是通过花括号{}
和冒号:
来定义的。这种相似性使得从C语言过渡到C++变得相对容易。
C++需要兼容C语言,所以C++中struct可以当成结构体使用。 另外C++中struct还可以用来定义类。 和class定义类是一样的,区别是 struct定义的类默认访问权限是public, class定义的类默认访问权限是private。 注意:在继承和模板参数列表位置,struct和class也有区别
class className
{
// 类体:由成员函数和成员变量组成
}; // 一定要注意后面的分号
class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分
号不能省略。
类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的方法或者
成员函数。
需注意:成员函数如果在类中定义,编译器可能会将其当成内 联函数处理。
注意:成员函数名前需要加类名::
一般情况下,更建议采用第二种方式!
为什么?
当代码被分割到多个文件中书写时,这加强了代码的多个重要特性,这些特性通常被称为“软件设计的原则”或“代码的可维护性”。以下是一些主要的好处:
为了充分利用这些好处,开发者通常会遵循一些最佳实践,如使用头文件(.h
或 .hpp
)来声明类和函数的接口,并使用源文件(.cpp
或 .cc
)来实现这些接口。此外,开发者还会使用命名空间和类来进一步组织代码,并遵循一致的命名和编码规范。
// 我们看看这个函数,是不是很僵硬?
class Date
{
public:
void Init(int year)
{
// 这里的year到底是成员变量,还是函数形参?
year = year;
}
private:
int year;
};
所以我们一般都建议这样书写,不容易混淆
{
public:
void Init(int year)
{
_year = year;
}
private:
int _year;
};
或者这样
class Date
{
public:
void Init(int year)
{
mYear = year;
}
private:
int mYear;
};
其他方式也可以的,主要看公司项目的要求。一般都是加个前缀或者后缀标识区分就行~
希望对你有帮助!加油!
若您认为本文内容有益,请不吝赐予赞同并订阅,以便持续接收有价值的信息。衷心感谢您的关注和支持!