当前位置: 首页 > wzjs >正文

新手建立企业网站流程中关村在线官网首页

新手建立企业网站流程,中关村在线官网首页,广告设计公司需要什么资质和证书,国家高新技术企业图片前言 C 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C 的关键。本文将深入探讨 C 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类…

前言

C++ 是一门强大的面向对象编程语言,而类(Class)作为其核心特性之一,是理解和使用 C++ 的关键。本文将深入探讨 C++ 类的基本特性,包括封装、继承和多态,同时讨论类中的权限控制,并展示如何使用类继承实现一个简单的多线程开发模板。

类的基本特性

封装(Encapsulation)

封装是面向对象编程的基本原则之一,它指的是将数据(属性)和操作数据的方法(行为)捆绑在一起,形成一个独立的单元(即类),并隐藏对象的内部实现细节,只对外提供必要的接口。

在 C++ 中,封装通过类的定义来实现。类中的成员变量通常被声明为私有(private),而成员函数则根据需要声明为公有(public)或保护(protected)。外部代码只能通过公有成员函数来访问和修改类的私有成员变量,从而保证了数据的安全性和完整性。

class Rectangle {
private:double width;double height;public:// 构造函数Rectangle(double w, double h) : width(w), height(h) {}// 公有成员函数,用于设置和获取宽度void setWidth(double w) { width = w; }double getWidth() const { return width; }// 公有成员函数,用于设置和获取高度void setHeight(double h) { height = h; }double getHeight() const { return height; }// 公有成员函数,计算面积double area() const { return width * height; }
};

继承(Inheritance)

继承允许一个类(子类或派生类)继承另一个类(父类或基类)的属性和方法。这有助于代码的重用和扩展,减少了重复代码的编写。

在 C++ 中,继承通过在派生类定义中使用冒号(:)后跟基类名来实现。派生类可以继承基类的公有和保护成员,但不能直接继承私有成员(除非通过基类的公有或保护成员函数访问)。

// 基类
class Shape {
protected:std::string color;public:Shape(const std::string& c) : color(c) {}void setColor(const std::string& c) { color = c; }std::string getColor() const { return color; }
};// 派生类
class Circle : public Shape {
private:double radius;public:Circle(const std::string& c, double r) : Shape(c), radius(r) {}double area() const { return 3.14159 * radius * radius; }
};

多态(Polymorphism)

多态是指同一个接口或方法可以根据对象的不同类型执行不同的操作。在 C++ 中,多态主要通过虚函数(Virtual Functions)和继承来实现。

虚函数允许在派生类中重写基类中的函数,当通过基类指针或引用调用虚函数时,会根据对象的实际类型调用相应的派生类函数。

class Animal {
public:virtual void makeSound() const { std::cout << "Animal sound" << std::endl; }
};class Dog : public Animal {
public:void makeSound() const override { std::cout << "Bark" << std::endl; }
};class Cat : public Animal {
public:void makeSound() const override { std::cout << "Meow" << std::endl; }
};void animalSound(const Animal& animal) {animal.makeSound(); // 根据实际类型调用相应的函数
}

类中的权限问题

在 C++ 类中,成员的访问权限由关键字 privateprotectedpublic 控制:

  • private:私有成员只能在类的内部访问,外部代码无法直接访问。
  • protected:保护成员可以在类的内部和派生类中访问,但不能在类的外部直接访问。
  • public:公有成员可以在类的内部、派生类和类的外部直接访问。

合理使用这些权限关键字可以有效地控制类的接口和实现,提高代码的安全性和可维护性。

使用类继承实现多线程开发模板

下面是一个简单的多线程开发模板,使用类继承的方式实现。这个模板利用了 C++11 引入的 <thread> 库,通过定义一个基类 ThreadBase 和派生类来实现具体的线程任务。

#include <iostream>
#include <thread>
#include <vector>
#include <memory>// 线程基类
class ThreadBase {
public:virtual ~ThreadBase() = default;// 启动线程void start() {thread_ = std::make_unique<std::thread>(&ThreadBase::run, this);}// 等待线程结束void join() {if (thread_ && thread_->joinable()) {thread_->join();}}protected:// 纯虚函数,由派生类实现具体的线程任务virtual void run() = 0;private:std::unique_ptr<std::thread> thread_;
};// 派生类,实现具体的线程任务
class MyThread : public ThreadBase {
protected:void run() override {for (int i = 0; i < 5; ++i) {std::cout << "Thread running: " << i << std::endl;std::this_thread::sleep_for(std::chrono::milliseconds(500));}}
};int main() {MyThread thread;thread.start();thread.join();return 0;
}

代码说明

  1. ThreadBase

    • 定义了一个纯虚函数 run(),要求派生类必须实现。
    • 提供了 start()join() 方法,用于启动和等待线程结束。
    • 使用 std::unique_ptr 管理 std::thread 对象,确保线程资源的安全释放。
  2. MyThread

    • 继承自 ThreadBase,并实现了 run() 方法。
    • run() 方法中,打印线程运行状态并休眠一段时间,模拟线程任务。
  3. main 函数

    • 创建 MyThread 对象,调用 start() 启动线程,然后调用 join() 等待线程结束。

通过这种方式,我们可以轻松地创建和管理多个线程,每个线程执行不同的任务。同时,由于使用了继承和多态,代码具有良好的扩展性和可维护性。

总结

C++ 类提供了封装、继承和多态等强大的面向对象特性,使得代码更加模块化、可重用和易于维护。合理使用类中的权限控制可以有效地保护数据的安全性和完整性。通过类继承实现多线程开发模板,可以方便地创建和管理多个线程,提高程序的并发性能。希望本文能帮助你更好地理解和使用 C++ 类。

http://www.dtcms.com/wzjs/824200.html

相关文章:

  • 做养生网站需要什么资质做网站建设的工资高吗
  • wordpress建站云盘中国建设银行信用卡电话
  • 销售网站的技巧做品牌设计网站
  • 柳州团购网站建设重庆南川网站制作公司哪家好
  • 做兼职比较正规的网站快速网站轻松排名
  • 阳谷做网站wordpress修改版面
  • 企业网站管理系统多少钱一年seoul是哪个国家
  • 红酒集团网站建设什么网站可以做微招聘
  • 樊城网站建设企业做网站需要做哪些工作
  • 江门英文网站建设怎么优化网站排名才能起来
  • 网站建设价格如何小程序商城代运营
  • 城市建设理论研究官方网站电子商务网站模板
  • 哪里有做网站企业深圳线上网络推广公司
  • 网站建设在线菜鸟教程网站建设项目报告
  • 网站伪静态化开发公众号
  • 网站建设报价明细单公司制作一个网站
  • ae做动画教程网站sem优化专员
  • 搜索引擎如何找到网站爱站网是什么
  • 做视频网站用什么服务器上海外贸上市公司有哪些
  • dede世界杯网站模板wordpress修改登陆
  • 网站案例演示自己做视频网站只能用地址连接
  • 福建网站建设科技有限公司安徽省建设监理协会新网站
  • 肇庆网站建设维护河源市做网站
  • 天水企业网站建设成都大邑网站建设
  • 厦门网站制作企业竞价托管选择微竞价
  • 期末作业做网站的心得体会怎么做卖东西的网站
  • 奉贤专业网站建设安徽安庆属于南方还是北方
  • 做彩平的网站js 调用本地wordpress
  • 青岛 企业网站建站html网页制作个人主页制作教程
  • 做推文封面图网站wordpress的插件目录