首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C++ 靜態成員函數調用語法:為什麼 QObject::tr() 可以通過類名直接調用

     編輯:程式設計綜合問答

語法規則

靜態成員函數 屬於類而非對象,調用時不需要 this 指針,因此可以通過 類名::函數名() 直接調用。

示例

class QObject {
public:
    static QString tr(const char* sourceText) { ... } // 靜態成員函數
};

// 調用
QString text = QObject::tr("quit"); // 正確
// QObject obj; obj.tr("quit"); // 也合法,但語義上不推薦

對比:非靜態成員函數

class MyClass {
public:
    void instanceFunc() { ... } // 非靜態
};
// MyClass::instanceFunc(); // 編譯錯誤:缺少 this
MyClass obj; obj.instanceFunc(); // 必須通過對象

Qt 中 tr() 的特殊性

  • tr() 用於國際化翻譯,需在繼承 QObject 的類中使用(或顯式指定上下文)。
  • 因為是靜態,可在構造函數、靜態初始化、非成員函數中直接調用 QObject::tr()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved