关于一些C++、Qt、Python方面的术语

这篇具有很好参考价值的文章主要介绍了关于一些C++、Qt、Python方面的术语。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

杂鱼之前纯粹用python没细致理解过的术语整理一下,常看常新(

定义 (Definition):

定义是指给一个实体分配内存空间,以便在程序中使用。在C++和Python中,这个实体可以是变量、函数或类。在C++中,定义通常是在声明之后实现实体的内容。
例如f(int a, int b)

// 定义整数变量x
int x;

// 定义函数add,计算两个整数的和
int add(int a, int b) {
    return a + b;
}
# 定义整数变量x
x = 10

# 定义函数add,计算两个整数的和
def add(a, b):
    return a + b

声明 (Declaration):

声明是指在程序中声明实体的存在,但不为其分配内存空间。在C++和Python中,这允许在使用实体之前提前告诉编译器或解释器实体的名称和类型。
例如f(int, int)

// 声明整数变量y
extern int y;

// 声明函数add,用于计算两个整数的和
int add(int a, int b);

Python不需要显式声明

实例 (Instance):

实例是类的一个具体对象。在C++和Python中,实例化是创建一个类的实例,并在内存中分配空间以存储其属性和方法。

// 定义一个简单的类Person
class Person {
public:
    int age;
};

// 创建Person类的实例p1
Person p1;
p1.age = 30; // 设置实例p1的age属性为30
# 定义一个简单的类Person
class Person:
    pass

# 创建Person类的实例p1
p1 = Person()
p1.age = 30  # 设置实例p1的age属性为30

调用 (Call):

调用是指执行函数或方法的过程。在C++和Python中,通过使用函数或方法的名称和适当的参数来调用它。
例如f(a, b)

// 定义函数multiply,计算两个整数的乘积
int multiply(int a, int b) {
    return a * b;
}

// 调用函数multiply,并将结果存储在变量result中
int result = multiply(5, 3);
# 定义函数multiply,计算两个整数的乘积
def multiply(a, b):
    return a * b

# 调用函数multiply,并将结果存储在变量result中
result = multiply(5, 3)

继承 (Inheritance):

继承是面向对象编程中的重要概念,允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。

// 定义一个基类Animal
class Animal {
public:
    void makeSound() {
        cout << "Some generic sound" << endl;
    }
};

// 定义一个派生类Dog,继承自Animal
class Dog : public Animal {
public:
    void makeSound() {
        cout << "Woof! Woof!" << endl;
    }
};

// 创建Dog类的实例d1,并调用其makeSound方法
Dog d1;
d1.makeSound(); // 输出:Woof! Woof!
# 定义一个基类Animal
class Animal:
    def makeSound(self):
        print("Some generic sound")

# 定义一个派生类Dog,继承自Animal
class Dog(Animal):
    def makeSound(self):
        print("Woof! Woof!")

# 创建Dog类的实例d1,并调用其makeSound方法
d1 = Dog()
d1.makeSound()  # 输出:Woof! Woof!

Animal是Dog的父类项

封装 (Encapsulation):

封装是一种面向对象编程的概念,指将数据和代码封装在一个单元内,并对外部隐藏实现细节。这样可以确保数据的安全性并简化代码的使用。

class Person {
private:
    int age;

public:
    void setAge(int newAge) {
        age = newAge;
    }

    int getAge() {
        return age;
    }
};

// 创建Person类的实例p1
Person p1;
p1.setAge(25);
int currentAge = p1.getAge(); // 通过公共方法访问私有属性age

在Python中,没有严格的访问控制,但通过约定将属性定义为私有的并提供公共方法来实现封装。

打包 (Packaging):

打包是指将相关的模块和资源组织在一起,以便于发布、安装和使用。在C++中,打包通常指将相关的类、头文件和源文件组织在一起形成库文件。在Python中,打包通常指将模块组织在包中,以便于发布和安装。
在C++中的打包示例:使用C++的SDK (Software Development Kit) 创建一个库文件。

在Python中的打包示例:将相关模块组织在一个文件夹中,并在文件夹中包含一个__init__.py文件,使其成为一个包。

构造函数 (Constructor):

构造函数是在创建类的实例时自动调用的特殊方法,用于初始化对象的属性和状态。在C++中,构造函数的名称与类名相同,在Python中使用__init__方法作为构造函数。

class Person {
public:
    int age;

    // 构造函数
    Person() {
        age = 0;
    }

    Person(int initialAge) {
        age = initialAge;
    }
};

// 创建Person类的实例p1,并调用带参数的构造函数
Person p1(30);
class Person:
    def __init__(self):
        self.age = 0

    def __init__(self, initialAge):
        self.age = initialAge

# 创建Person类的实例p1,并调用带参数的构造函数
p1 = Person(30)

:: (Scope Resolution Operator):

在C++中,::是范围解析运算符,用于指定在特定范围内查找标识符(如类的成员变量或方法)。它也用于访问命名空间中的元素。
在Python中没有::运算符,因为Python使用点(.)作为范围解析运算符。

发射 (Signal) 与 emit:

在Qt中,发射(Signal)是一种用于在对象之间发送消息的机制。信号是特殊的成员函数,当特定事件发生时,可以通过emit关键字发射该信号。其他对象可以连接到这些信号并在信号发射时执行相关的槽函数。

class MyButton : public QPushButton {
    Q_OBJECT

signals:
    void clickedWithCount(int count);

public slots:
    void onButtonClick() {
        static int clickCount = 0;
        clickCount++;
        emit clickedWithCount(clickCount);
    }
};

// 创建MyButton的实例,并连接到槽函数
MyButton button;
QObject::connect(&button, &MyButton::clickedWithCount, [](int count) {
    cout << "Button clicked " << count << " times" << endl;
});

button.click(); // 触发信号,槽函数输出 "Button clicked 1 times"
button.click(); // 触发信号,槽函数输出 "Button clicked 2 times"

在Python中,没有显式的信号和槽机制,但可以使用Qt for Python中的信号和槽模块来实现类似的功能。

信息与槽函数是Qt中的一种机制,用于在对象之间进行通信。一个对象发出一个信号(信息),而其他对象连接到该信号的槽函数上,当信号被发出时,槽函数将被执行。
在上面的Qt示例中,clickedWithCount是一个信号,而onButtonClick是一个槽函数。

SDK (Software Development Kit):

SDK是软件开发工具包的缩写,是一个用于开发应用程序的集合,通常包括库、API文档、示例代码和工具。SDK可以帮助开发者更容易地使用特定平台或框架的功能。
在C++和Qt中,Qt SDK是一套用于开发跨平台应用程序的工具包,包括Qt库、Qt Creator IDE、Qt文档等。

在Python中,Python SDK(也称为Python标准库)是Python语言的核心库,提供了许多内置模块和函数,用于执行各种任务。

动态 (Dynamic) 与 静态 (Static):

动态和静态通常用于描述语言或类型系统的性质。
动态语言(如Python):变量类型在运行时确定,不需要显式声明类型,具有更大的灵活性,但在某些情况下可能导致运行时错误。

静态语言(如C++):变量类型在编译时确定,需要显式声明类型,更加严格和类型安全,但可能会导致编写代码更繁琐。

在C++中,变量可以具有静态或动态存储持续时间,这与变量的生命周期和作用域有关。在Python中,变量是动态类型的,类型在运行时由解释器推断。

修饰词

修饰词用于控制类中成员的访问权限和特性。它们帮助实现封装、继承和多态等面向对象编程的概念。

public:

在C++和Qt中,public修饰符用于指定类成员的公共访问权限。公共成员可以在类的内部和外部访问,包括类的对象和其他类。
在C++中的示例:

class MyClass {
public:
    int publicVar;
    void publicMethod() {
        // code here
    }
};

在Qt中的示例:

class MyClass : public QObject {
    Q_OBJECT

public:
    int publicVar;
    void publicMethod() {
        // code here
    }
signals:
    void mySignal();
};

在Python中,类的成员默认是公共的,没有显式的public关键字。

protected:

在C++和Qt中,protected修饰符用于指定类成员的保护访问权限。保护成员可以在类的内部和派生类中访问,但不能在类的外部访问。
在C++中的示例:

class MyClass {
protected:
    int protectedVar;
    void protectedMethod() {
        // code here
    }
};

在Qt中,由于信号和槽机制的特殊需求,Qt中的信号必须定义在protected或public部分。

在Python中,没有显式的protected关键字,但可以通过在属性或方法名称前添加一个下划线来暗示保护属性或方法。

private:

在C++和Qt中,private修饰符用于指定类成员的私有访问权限。私有成员只能在类的内部访问,无法在类的外部和派生类中直接访问。
在C++中的示例:

class MyClass {
private:
    int privateVar;
    void privateMethod() {
        // code here
    }
};

在Qt中的示例:

class MyClass : public QObject {
    Q_OBJECT

private:
    int privateVar;
    void privateMethod() {
        // code here
    }
};

在Python中,通过在属性或方法名称前添加两个下划线来实现类似的效果,即将属性或方法变为私有。

signal 与 slot:

在Qt中,signal是用于发射消息的特殊成员函数,用于实现信息与槽机制。它只声明,不定义,因为它是由Qt的元对象系统处理的。signal用于发出通知,而slot是用于接收通知的槽函数。
在C++和Qt中的示例:

class MyClass : public QObject {
    Q_OBJECT

signals:
    void mySignal();

public slots:
    void mySlot() {
        // code here
    }
};

在Python中,没有直接的信号和槽机制。但是,通过使用PyQt或PySide这样的Qt for Python库,可以使用相似的信号和槽机制。
——————————————————
有定义声明调用的例子:

#include <iostream>

// 函数声明,只需写参数类型
int add(int, int);

// 函数定义,实现两个整数相加的功能
int add(int a, int b) {
    return a + b;
}

int main() {
    a = 5;
    b = 3;
    // 函数调用,传递参数值并获得返回结果
    int result = add(a, b);

    // 输出结果
    std::cout << "Result: " << result << std::endl;

    return 0;
}

指针、地址

指针是一个重要的概念,涉及到内存地址和数据类型。让我们逐步解释以下术语:

指针 (Pointer):
指针是一个变量,其值为内存地址,即某个数据在计算机内存中的位置。指针可以指向任何数据类型的变量,包括基本数据类型、数组、结构体、类等。

取地址 (&):
在C++中,使用&运算符可以获取变量的内存地址,即变量的指针。例如,对于变量a,&a表示a的内存地址。

int a = 10;
int* ptr = &a; // 获取变量a的地址,并将其赋值给指针ptr


*a:
在C++中,*号用于两个不同的情况:
a. 定义指针变量:例如,int* ptr; 定义了一个指向整数的指针变量ptr。
b. 解引用操作:例如,*ptr 表示获取指针ptr指向地址的值。这个过程称为解引用,它允许我们访问指针指向地址的数据。

int a = 10;
int* ptr = &a; // 定义指向整数的指针ptr,并将其指向a的地址
int value = *ptr; // 解引用ptr,获取a的值,value现在为10
&a:
&a表示变量a的地址,它是一个指向a的指针。

指针的使用:
指针通常用于动态内存分配、函数参数传递、数组操作等。它们使得我们能够在程序运行时管理内存和操作数据。

int main() {
    int a = 10;
    int* ptr = &a; // ptr指向变量a的地址

    *ptr = 20; // 解引用ptr并将新的值20赋给a

    std::cout << "a: " << a << std::endl; // 输出20,因为通过ptr修改了a的值

    return 0;
}

上述示例定义了一个指向整数的指针ptr,它指向变量a的地址。通过解引用指针ptr,我们可以修改a的值。修改了指针指向的值也就修改了指针所指向的变量。文章来源地址https://www.toymoban.com/news/detail-606692.html

到了这里,关于关于一些C++、Qt、Python方面的术语的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Qt for Python

    目前python的qt 绑定有两种方式 pyqt 和 pyside。目前PyQt是由一家小公司Riverbank Computing维护的,PyQt历史更长一些,比较稳定,开发社区也比较大,有相关的deploy工具;而PySide(又名Qt for Python)现由Qt公司维护,比PyQt更年轻一些。截至2019年,最新版本是PyQt5和PySide2。PySide6是2020年

    2024年02月16日
    浏览(31)
  • QT界面建立(Python)

    工具:QTdesigner+pycharm+py3.6+pyui(转换工具) QTpython语言文件的生成 QTdesigner作为可视化编程软件,上手很容易。首先通过QTdesigner编写界面,这里的编写可以不需要加入槽函数,等待可视化编写完成后,再通过对源文件添加语句来实现函数的调用。 下图就是编程界面,有许多控

    2024年02月16日
    浏览(36)
  • Python+Qt掌纹识别

    程序示例精选 Python+Qt掌纹识别 如需安装运行环境或远程调试,见文章底部个人 QQ 名片,由专业技术人员远程协助! 这篇博客针对Python+Qt掌纹识别编写代码,代码整洁,规则,易读。 学习与应用推荐首选。 一、所需工具软件 二、使用步骤         1. 引入库         

    2024年02月01日
    浏览(36)
  • qt&python混合编程

    参考:Qt调用Python详细过程_贝勒里恩的博客-CSDN博客_qt python 1.环境搭建 1.1.python3.6 32bits 1.2.qt5.12.12 32bits 说明: (1). 务必保持版本位数一致,没有一致就得重新下载一致的版本 (2).以上软件环境的下载和安装,请自行百度,资料很多,在此重点说说混合编程遇到的错误如何解决. (3).请装

    2024年02月06日
    浏览(56)
  • Qt使用QWebEngineView一些记录

    1.关闭软件警告: Release of profile requested but WebEnginePage still not deleted. Expect troubles! 原因,系统退出关闭view,没有释放page。 解决办法:手动释放page  顺便把view也释放了。 2.获取QWebEngineView点击超链接 重写QWebEngineView中的createWindow函数 3.获取QWebEngineView当前链接 QWebEngineView自带

    2024年02月07日
    浏览(45)
  • Python Qt(七)Listview

    源代码: 截图:

    2024年02月11日
    浏览(43)
  • Qt调用Python详细过程

      本文福利, 莬 费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击 莬 费领取↓↓ 编写Python代码,

    2023年04月11日
    浏览(45)
  • 【Python】基于Python和Qt的海康威视相机开发

    【项目实践】海康威视工业相机SDK开发小白版入门教程(VS2015+OpenCV4.5.1)   此前写了一篇基于C++开发海康威视相机的博客,貌似看的人还挺多,收藏量比较高,但其实当时就知道其实海康威视相机还可以使用python开发,但当时python水平不高,也没有深入了解,趁此机会,好

    2024年02月16日
    浏览(50)
  • Python Qt学习(八)Treeview

    源代码: 截图:

    2024年02月09日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包