您的位置:首页 > 汽车 > 新车 > 石湾网站设计_建站公司网站用什么好_seo线上培训班_seo网站优化培训找哪些

石湾网站设计_建站公司网站用什么好_seo线上培训班_seo网站优化培训找哪些

2025/1/3 5:10:44 来源:https://blog.csdn.net/weixin_54114700/article/details/144777507  浏览:    关键词:石湾网站设计_建站公司网站用什么好_seo线上培训班_seo网站优化培训找哪些
石湾网站设计_建站公司网站用什么好_seo线上培训班_seo网站优化培训找哪些

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、类定义格式
  • 二、基础知识点
    • 1.访问限定符
    • 2.类域
  • 总结

前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、类定义格式

• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省
略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; 类中的函数称为类的⽅法或
者成员函数。
• 为了区分成员变量,⼀般习惯上成员变量会加⼀个特殊标识,如成员变量前⾯或者后⾯加_ 或者 m
开头,注意C++中这个并不是强制的,只是⼀些惯例,具体看公司的要求。
• C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是
struct中可以定义函数,⼀般情况下我们还是推荐⽤class定义类

类成员说明:

  • 访问修饰符privateprotectedpublic 用于指定类成员的访问级别。

    • private 成员只能被类自身的成员函数访问。
    • protected 成员可以被类自身的成员函数以及派生类访问。
    • public 成员可以被任何访问类的对象或函数访问。
  • 构造函数:用于初始化对象。如果未提供,编译器会生成一个默认构造函数。

  • 拷贝构造函数:用于创建一个对象作为另一个同类型对象的副本。

  • 析构函数:用于清理对象在销毁前需要释放的资源。如果未提供,编译器会生成一个默认析构函数。

  • 成员函数:定义在类内部,用于操作类的数据成员。

  • 友元函数:可以访问类的私有和保护成员,即使它们不是类的成员函数。

#include<iostream>
using namespace std;
class Stack
{
public:
// 成员函数
void Init(int n = 4)
{
array = (int*)malloc(sizeof(int) * n);
if (nullptr == array)
{
perror("malloc申请空间失败");
return;
}
capacity = n;
top = 0;
}
void Push(int x)
{
// ...扩容
array[top++] = x;
}int Top()
{
assert(top > 0);
return array[top - 1];
}
void Destroy()
{
free(array);
array = nullptr;
top = capacity = 0;
}
private:
// 成员变量
int* array;
size_t capacity;
size_t top;
}; // 分号不能省略int main()
{
Stack st;
st.Init();
st.Push(1);
st.Push(2);
cout << st.Top() << endl;
st.Destroy();
return 0;
}class Date
{
public:
void Init(int year, int month, int day)
{
_year = year;
_month = month;
_day = day;
}private:
// 为了区分成员变量,⼀般习惯上成员变量
// 会加⼀个特殊标识,如_ 或者 m开头
int _year; // year_ m_year
int _month;
int _day;
};
int main()
{
Date d;
d.Init(2024, 3, 31);
return 0;
}

二、基础知识点

1.访问限定符

• C++⼀种实现封装的⽅式,⽤类将对象的属性与⽅法结合在⼀块,让对象更加完善,通过访问权限
选择性的将其接⼝提供给外部的⽤⼾使⽤。
• public修饰的成员在类外可以直接被访问;protected和private修饰的成员在类外不能直接被访
问,protected和private是⼀样的,以后继承章节才能体现出他们的区别。
• 访问权限作⽤域从该访问限定符出现的位置开始直到下⼀个访问限定符出现时为⽌,如果后⾯没有
访问限定符,作⽤域就到 }即类结束。
• class定义成员没有被访问限定符修饰时默认为private,struct默认为public。
• ⼀般成员变量都会被限制为private/protected,需要给别⼈使⽤的成员函数会放为public。

在C++中,访问限定符用于控制类成员(包括成员变量和成员函数)的可见性和访问权限。C++提供了三种访问限定符:

  1. public:公有成员

    • 公有成员可以被任何可以访问类的对象访问。
    • 公有成员函数可以在类的外部被调用。
    • 公有成员变量可以在类的外部被直接访问,但这通常不是一个好的编程实践,因为它破坏了封装性。
  2. protected:保护成员

    • 保护成员可以被类本身的成员函数访问,也可以被派生类(子类)访问。
    • 保护成员变量不能在类的外部直接访问,但可以通过类的公有或保护成员函数来访问。
    • 保护成员函数同样可以在派生类中被访问和重写。
  3. private:私有成员

    • 私有成员只能被类本身的成员函数访问。
    • 私有成员变量和函数不能在类的外部直接访问,也不能在派生类中直接访问。
    • 私有成员提供了最高的封装级别,确保了类内部实现的细节对外部是隐藏的。
class MyClass {
private:int privateVar; // 只能在类内部访问protected:int protectedVar; // 可以在类内部和派生类中访问public:MyClass(int privVal, int protVal) : privateVar(privVal), protectedVar(protVal) {}void setPrivateVar(int val) { privateVar = val; } // 公有成员函数,用于设置私有变量int getPrivateVar() const { return privateVar; } // 公有成员函数,用于获取私有变量void setProtectedVar(int val) { protectedVar = val; } // 公有成员函数,用于设置保护变量int getProtectedVar() const { return protectedVar; } // 公有成员函数,用于获取保护变量
};

在这个例子中,privateVar 是私有成员,只能在 MyClass 的内部访问。protectedVar 是保护成员,可以在 MyClass 的内部以及任何派生类中访问。公有成员函数 setPrivateVargetPrivateVar 提供了一种安全的方式来设置和获取私有变量的值。

访问限定符的使用原则:

  • 封装性:尽量将成员变量设置为私有,通过公有成员函数来访问和修改这些变量,以隐藏实现细节并保护数据。
  • 继承性:如果需要在派生类中访问基类的成员,可以将这些成员设置为保护。
  • 公开接口:公有成员用于定义类与外部世界的接口,包括数据访问和操作。

访问限定符是面向对象编程中封装特性的重要组成部分,它们帮助开发者控制类成员的访问权限,从而实现更好的数据隐藏和接口设计。

2.类域

• 类定义了⼀个新的作⽤域,类的所有成员都在类的作⽤域中,在类体外定义成员时,需要使⽤ :: 作
⽤域操作符指明成员属于哪个类域。
• 类域影响的是编译的查找规则,下⾯程序中Init如果不指定类域Stack,那么编译器就把Init当成全
局函数,那么编译时,找不到array等成员的声明/定义在哪⾥,就会报错。指定类域Stack,就是知
道Init是成员函数,当前域找不到的array等成员,就会到类域中去查找。

在C++中,类域(Class Scope)是指类内部的命名空间,它定义了类成员(包括成员变量和成员函数)的作用域。类域是对象的蓝图,它规定了对象可以拥有的数据和行为。以下是类域的一些关键特性:

  1. 封装:类域允许将数据(成员变量)和操作这些数据的代码(成员函数)封装在一起。这种封装可以隐藏内部实现细节,只暴露必要的接口。

  2. 访问控制:类域通过访问限定符(publicprotectedprivate)控制对类成员的访问。这有助于实现良好的封装和信息隐藏。

  3. 命名空间:类域提供了一个命名空间,这意味着类中的成员名称不会与全局名称空间中的名称冲突。

  4. 构造函数和析构函数:类域可以包含构造函数,用于初始化对象,以及析构函数,用于清理对象销毁前需要释放的资源。

  5. 成员函数:类域可以定义成员函数,这些函数可以访问和修改类的私有和保护成员。

  6. 友元函数和友元类:类域可以声明友元函数或友元类,这些实体可以访问类的私有和保护成员,即使它们不是类的成员。

  7. 静态成员:类域可以包含静态成员变量和静态成员函数。静态成员属于类本身,而不是类的任何特定对象。

  8. 继承:类域可以定义基类和派生类之间的关系,包括继承和多态。

class MyClass {
public:// 公有成员函数,可以被外部访问void publicFunction() {// 访问私有成员变量privateVar = 10;}protected:// 保护成员变量,可以被派生类访问int protectedVar;private:// 私有成员变量,只能在类内部访问int privateVar;// 私有成员函数,只能在类内部访问void privateFunction() {// 操作私有成员变量}
};
#include<iostream>
using namespace std;
class Stack
{
public:
// 成员函数
void Init(int n = 4);private:
// 成员变量
int* array;
size_t capacity;
size_t top;
};
// 声明和定义分离,需要指定类域
void Stack::Init(int n)
{
array = (int*)malloc(sizeof(int) * n);
if (nullptr == array)
{
perror("malloc申请空间失败");
return;
}
capacity = n;
top = 0;
}
int main()
{
Stack st;
st.Init();
return 0;
}

在这个例子中,MyClass 的类域定义了三个访问级别的成员:公有的、保护的和私有的。每个访问级别都定义了不同的作用域和访问权限。

类域是C+++面向对象编程的核心概念之一,它为数据和行为提供了一个清晰的组织结构,并支持封装、继承和多态等特性。


总结

类(Class)在C+++中是一个核心概念,用于实现面向对象编程(OOP)的封装、继承和多态特性。以下是对类定义的总结:

1. 封装(Encapsulation)

封装是将数据(成员变量)和操作这些数据的代码(成员函数)捆绑在一起的过程。类的封装通过访问控制实现,限制了外部对内部数据的直接访问。

2. 成员变量(Member Variables)

类可以包含成员变量,这些变量是类的实例(对象)的状态或属性。成员变量可以有不同的访问级别:publicprotectedprivate

3. 成员函数(Member Functions)

类可以包含成员函数,这些函数定义了类的行为。成员函数可以访问和操作类的私有和保护成员变量。

4. 构造函数(Constructors)

构造函数是一种特殊的成员函数,用于初始化新创建的对象。它们与类同名,没有返回类型,且可以重载以接受不同的参数。

5. 析构函数(Destructors)

析构函数是用于清理对象销毁前需要释放的资源的成员函数。析构函数与类同名,前面加上波浪号(~),没有参数和返回类型。

6. 访问限定符(Access Specifiers)

publicprotectedprivate 关键字用于控制类成员的可见性和访问权限。

7. 静态成员(Static Members)

静态成员变量和函数属于类本身,而不是类的任何特定对象。静态成员变量在所有对象中共享,静态成员函数不能访问非静态成员变量。

8. 友元(Friends)

友元函数或友元类可以访问类的私有和保护成员,即使它们不是类的成员。

9. 继承(Inheritance)

类可以继承另一个类的属性和行为,从而实现代码的重用和扩展。

10. 多态(Polymorphism)

多态允许你通过基类指针或引用调用派生类的成员函数,这使得同一个接口可以有多种不同的实现。

11. 类模板(Class Templates)

类模板允许你定义使用任意类型作为成员变量或成员函数参数的类,从而实现代码的泛型化。

class MyClass {
private:int privateVar;protected:int protectedVar;public:MyClass(int val) : privateVar(val) {// 构造函数初始化列表}~MyClass() {// 析构函数}void publicFunction() {// 公有成员函数}static int staticVar; // 静态成员变量static void staticFunction() {// 静态成员函数}friend void friendFunction(MyClass& obj); // 友元函数
};

在这个示例中,MyClass 包含了不同访问级别的成员变量和函数,展示了类定义的多个方面。类定义是C+++面向对象编程的基础,它提供了一种组织和封装代码的方式,使得代码更加模块化、易于理解和维护。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com