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
相关推荐
xlp666hub20 小时前
Leetcode 第三题:用C++解决最长连续序列
c++·leetcode
会员源码网21 小时前
构造函数抛出异常:C++对象部分初始化的陷阱与应对策略
c++
xlp666hub1 天前
Leetcode第二题:用 C++ 解决字母异位词分组
c++·leetcode
不想写代码的星星1 天前
static 关键字:从 C 到 C++,一篇文章彻底搞懂它的“七十二变”
c++
xlp666hub2 天前
Leetcode第一题:用C++解决两数之和问题
c++·leetcode
不想写代码的星星2 天前
C++继承、组合、聚合:选错了是屎山,选对了是神器
c++
不想写代码的星星3 天前
std::function 详解:用法、原理与现代 C++ 最佳实践
c++
樱木Plus5 天前
深拷贝(Deep Copy)和浅拷贝(Shallow Copy)
c++
blasit7 天前
笔记:Qt C++建立子线程做一个socket TCP常连接通信
c++·qt·tcp/ip
肆忆_8 天前
# 用 5 个问题学懂 C++ 虚函数(入门级)
c++