C++ 学习常见问题汇总

C\C++\Qt中对0\NULL\nullptr定义的不同

        NULL是宏定义,nullptr是C++关键字

        C中NULL是指向0的空指针,C++中NULL是0,nullptr是空指针标识

C++中^运算符是异或

       Matlab中^是幂运算,C++中幂运算是pow(a,b)即a的b次方

C++矩阵运算库Eigen

       利用C++模板编程的思想编写的模板库,不支持库链接方式编译

       使用时直接#include文件路径,如#include "Eigen/Dense"

C++全局变量

        定义在头文件类定义之外或者源文件函数体之外,不同于宏定义,比如#define PI 3.14,可以被视作任何基本类型,全局变量在定义时需要声明类型。

        static和extern型区别:前者为静态全局变量(内部),作用域仅在该头文件/源文件,其他文件即使#include了该头文件仍然不可调用,作为一种对全局变量的保护;后者为外部全局变量(动态),作用域在所有包含了该头文件的源文件中。

        在使用extern时,需要先在某个头文件中定义extern type variable,然后在需要调用该变量的源文件中调用该头文件,并且重新声明type variable。但是在Qt中各源文件之间最多只能声明一次,否则会出现重定义错误;在C++中理论上来说,每个调用该变量的源文件都应该声明该变量。

        相应的,static修饰的函数,也只能在该源文件中调用;尽可能不要用extern修饰函数,而是使用类中的成员函数,在需要调用该函数的源文件中,包含该类的头文件,就可以通过类名::函数名来访问。

C++不支持在程序运行中再通过字符串去定义变量名字

    而是在程序编译时就已经将变量转换为了地址

    这是静态语言和动态语言(如python等)区别之一

C++多个cpp引用同一个h所导致的函数重定义问题

       检查pro中HEADERS+=和SOURCES+=没有重复引用

       #ifndef #define 或者 #pragma once也都无法解决

       尽量不要在h中直接定义函数,而是将函数定义在类中或者作为inline内联函数

C++定义宏不能以数字开头

       意味着h、cpp等均不能以数字开头

Qt C++调用python常见问题

        Python文件不能取名为test函数名不能取名为func

        Python文件需要拷贝到debug文件夹中才能正常调试和运行

初始化python和结束进程需要放到调用python的循环之外 否则导入模块失败

      第二次还是会失败 所以直接放到构造和析构函数中去

C++传入和传出Python用的都是PyTuple元组

        元组元素个数和python函数的输入输出参数一致

        元组的元素可以是整型、浮点、字符、列表等等

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值