C++符合快速入门(有java和js基础的)

发布于:2025-07-29 ⋅ 阅读:(12) ⋅ 点赞:(0)

​1. 基础符号对比表​

​符号/语法​ ​C++ (Qt)​ ​Java​ ​JavaScript​ ​解释​
​输出调试信息​ qDebug() << "Hi" << 123; System.out.println("Hi" + 123); console.log("Hi", 123); Qt 用 << 流式输出
​字符串格式化​ QString("Name: %1").arg(name); String.format("Name: %s", name); `Name: ${name}` %1 是占位符,arg() 替换
​信号(事件)​ emit signalName(data); listener.onEvent(data); dispatchEvent(new Event(data)); Qt 的信号槽机制
​Lambda 函数​ [=]() { qDebug() << x; } () -> System.out.println(x); () => console.log(x); [=] 表示捕获外部变量
​空指针​ nullptr null nullundefined C++11 引入的更安全的空指针
​作用域解析​ ::(如 ClassName::method() .(如 ClassName.method() .(如 ClassName.method() C++ 用 :: 访问类/命名空间成员

​2. 特殊符号详解​
​(1) ->(成员访问指针)​

  • ​C++​​:用于访问 ​​指针对象的成员​​。
QPushButton *button = new QPushButton;  
button->setText("Click"); // 相当于 Java/JS 的 button.setText()  
  • ​对比 Java/JS​​:
// Java  
Button button = new Button();  
button.setText("Click");  
// JavaScript  
const button = new Button();  
button.setText("Click");  

​(2) &(引用/取地址)​

  • ​C++​​:
    • ​引用​​(类似 Java 的“别名”):
    int a = 10;  
    int &ref = a; // ref 是 a 的引用  
    ref = 20;     // 现在 a = 20  
    • ​取地址​​(获取变量内存地址):
    int* ptr = &a; // ptr 存储 a 的内存地址  
  • ​Java/JS​​:没有直接对应的概念(Java 的引用是隐式的,JS 变量本身就是引用)。

​(3) *(指针/解引用)​

  • ​C++​​:
    • ​声明指针​​:
    int *p; // p 是一个指向 int 的指针  
    • ​解引用​​(获取指针指向的值):
    int a = 10;  
    int *p = &a;  
    int b = *p; // b = 10  
  • ​Java/JS​​:没有指针,直接用对象引用。

​(4) ::(作用域解析)​

  • ​C++​​:访问 ​​类静态成员​​ 或 ​​命名空间​​。
class MyClass {  
public:  
  static void foo();  
};  
MyClass::foo(); // 调用静态方法  
  • ​Java/JS​​:直接用 .
// Java  
MyClass.foo();  
// JavaScript  
MyClass.foo();  

​(5) [](数组/Lambda 捕获)​

  • ​C++​​:
    • ​数组​​:
    int arr[3] = {1, 2, 3};  
    int x = arr[0]; // x = 1  
    • ​Lambda 捕获​​:
    int a = 10;  
    auto func = [=]() { qDebug() << a; }; // [=] 表示按值捕获  
  • ​Java/JS​​:
// Java  
int[] arr = {1, 2, 3};  
int x = arr[0];  
// JavaScript  
const arr = [1, 2, 3];  
const x = arr[0];  

​3. 常见 Qt 特有符号​

​符号/语法​ ​解释​ ​Java/JS 类似概念​
SIGNAL() / SLOT() Qt4 的信号槽连接语法(旧版) addEventListener() (JS)
Q_OBJECT 宏,表示该类支持信号槽 无直接对应
Q_INVOKABLE 标记方法可被 QML 调用 @Exposed 注解(JavaFX)
Q_PROPERTY 定义 QML 可访问的属性 @FXML 属性绑定(JavaFX)

​4. 快速记忆技巧​

  1. <<​ → 想象成 console.log(), 或 Java 的 + 拼接。
  2. ->​ → 和 Java/JS 的 . 一样,但用于指针。
  3. &*​ → 记住 & 是“取地址”,* 是“解引用”。
  4. ::​ → 类似 Java 的 .,但用于类/命名空间。
  5. emit​ → 就当它是 JS 的 dispatchEvent() 或 Java 的 listener.call()

网站公告

今日签到

点亮在社区的每一天
去签到