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
相关推荐
SmartBrain1 小时前
Python 特性(第一部分):知识点讲解(含示例)
开发语言·人工智能·python·算法
墨雪不会编程2 小时前
C++之【list详解篇一】如何玩好链表
c++·链表·list
01二进制代码漫游日记2 小时前
自定义类型:联合和枚举(一)
c语言·开发语言·学习·算法
柏木乃一2 小时前
Linux进程信号(2):信号产生part2
linux·运维·服务器·c++·信号处理·信号·异常
SmartBrain2 小时前
FastAPI进阶(第一部分):路由和依赖特性(含考题)
开发语言·python
HAPPY酷2 小时前
C++ 成员指针(Pointer to Member)完全指南
java·c++·算法
Sunsets_Red3 小时前
浅谈随机化与模拟退火
java·c语言·c++·python·算法·c#·信息学竞赛
星火开发设计3 小时前
模板参数:类型参数与非类型参数的区别
java·开发语言·前端·数据库·c++·算法
忘梓.3 小时前
二叉搜索树·极速分拣篇」:用C++怒肝《双截棍》分拣算法,暴打节点删除Boss战!
开发语言·c++·算法