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
相关推荐
森林里的程序猿猿18 分钟前
并发设计模式
java·开发语言·jvm
222you27 分钟前
四个主要的函数式接口
java·开发语言
smchaopiao2 小时前
Python中字典与列表合并的问题与解决方法
开发语言·python
敲代码的瓦龙2 小时前
Java?面向对象三大特性!!!
java·开发语言
2501_921649492 小时前
期货 Tick 级数据与基金净值历史数据 API 接口详解
开发语言·后端·python·websocket·金融·区块链
野犬寒鸦2 小时前
Redis复习记录day1
服务器·开发语言·数据库·redis·缓存
小菜鸡桃蛋狗2 小时前
C++——类和对象(下)
开发语言·c++
骑龙赶鸭2 小时前
java开发项目中遇到的难点,面试!
java·开发语言·面试
张人玉2 小时前
C#通讯(上位机)常用知识点
开发语言·c#·通讯·上位机开发