C++自带的set get语法(MSVC)

一、属性介绍

今天在书上无意间看到一个语法__declspec(property), 它是 Microsoft Visual C++ (MSVC) 编译器提供的一个非标准扩展语法,用于在 C++ 类中模拟"属性(property)"的概念,允许你像访问成员变量一样调用 getter/setter 函数。

__declspec(property) 是 Microsoft 特有的扩展,不被 GCC、Clang 支持。

如果你需要跨平台代码,应避免使用它,改用普通 getter/setter。

二、测试代码

代码片

javascript 复制代码
// test class
class CTestProperty
{
public:
    CTestProperty() {}
    ~CTestProperty() {}

    int getAge() const {
        std::cout << "==>call get func." << std::endl;
        return m_age;
    }

    void setAge(int v) {
        std::cout << "==>call set func." << std::endl;
        m_age = v;
    }
    __declspec(property(get=getAge, put=setAge)) int age;

private:
    int m_age = 20;
};

//test call
CTestProperty p;
p.age = 33;
std::cout << "==>ret: ";
std::cout << p.age << std::endl;

//output:
==>call set func.
==>ret: ==>call get func.
33
相关推荐
自己的九又四分之三站台35 分钟前
C# 接入 RasterLite2:从原生 DLL 加载到 Coverage、Section、Tile 验证
开发语言·c#·地理信息
飞翔的火箭弹36 分钟前
企业网络资产管理用什么系统工具
开发语言·网络·php
Brilliantwxx39 分钟前
【Linux】 进程(5) 僵尸进程与内存泄漏扩展
linux·运维·服务器·网络·c++
码云骑士42 分钟前
116-Python调用GPT-4V分析图片-Base64编码-多图-JSON结构化输出
开发语言·python·json
88号技师1 小时前
2026年SCI-分数牛顿衍生优化算法Fractional Newton-derived optimizer-附Matlab免费代码
开发语言·算法·数学建模·matlab·优化算法
承渊政道1 小时前
【Python编程—从入门到实践】(Python操作列表深度教程:循环、切片、元组与代码风格)
开发语言·python·pycharm·列表·元组·切片
布值倒区什么name1 小时前
Pycharm2026找不到编译器 点击运行运行不了
开发语言·python·pycharm
程与留1 小时前
08_对话框系统全解析——模态非模态、QMessageBox、QFileDialog
c++·qt
智购科技自动售货机工厂1 小时前
2026自动售货机电机驱动芯片选型:从L298N到DRV8870的工程实践~YH
大数据·开发语言·数据库·人工智能·单片机·嵌入式硬件·scikit-learn
2501_915918411 小时前
Rust 程序抓包解密,rustls 不认系统证书的几种办法
开发语言·后端·网络协议·ios·adb·https·rust