static类常量成员定义

本文探讨了C++中不同类型的静态常量成员变量的声明与定义方式,包括内置类型如int、bool、char可以直接在类内声明定义,而自定义类型如类对象作为静态常量成员时必须在类外定义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对类成员是int bool char类型的static const 成员可以在类中声明时直接定义、如下的a

class B{
public:
    void func(){std::cout<<this->a;}
private:
    static const int a=1;
};

但是也可以在类内声明在类外定义(但是定义时得把static去掉)如下

class B{
public:
    void func(){std::cout<<this->a;}
private:
    static const int a;
};
const int B::a=1;

对于自定义的类的对象成为另一个类的static const成员则一定要定义在类外面,声明在类内。如下

class A{
public:
    A(int a=0):m(a){}
    int m;
};
class B{
public:
    void func(){std::cout<<this->a.m;}
private:
    static const A a;
};
const A B::a=1;

在类内定义是不行的 。为啥内置类型直接可以声明定义 而自定义类型不行。原因我也不清楚。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值