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
相关推荐
小熊Coding2 分钟前
Python二手房数据可视化分析+预测+推荐
开发语言·python·信息可视化·django·计算机毕业设计·二手房数据分析·二手房数据可视化分析
疯狂打码的少年3 分钟前
JDK 7、8、13 和 20区别深度了解
java·开发语言
艾莉丝努力练剑3 分钟前
【Linux线程】Linux系统多线程(九):线程池实现(附代码示例)
linux·运维·服务器·c++·学习·架构
tankeven6 分钟前
C++ 学习杂记01:C++ vector 容器详细
c++
Sayuanni%37 分钟前
五层网络模型-应用层
开发语言·网络·php
迷藏4947 分钟前
# 发散创新:基于Python的自动特征工程实战与深度优化在机器学习
java·开发语言·python·机器学习
fie88898 分钟前
多IEEE标准系统潮流计算程序(MATLAB实现)
开发语言·matlab
艾莉丝努力练剑8 分钟前
【Linux线程】Linux系统多线程(八):<策略模式>日志系统的封装实现
linux·运维·服务器·c++·学习·策略模式
盐焗鹌鹑蛋11 分钟前
【C++】string模拟实现
c++
特种加菲猫13 分钟前
C++进阶:模板深度解析与继承机制初探
开发语言·c++