C++:static在结构体和类中的注意事项

tip:如果看不懂,建议补一点理论基础哦


#include <iostream>
//类和结构中的静态
//静态是共用一个地址的 因此此处的结果是指向的地址
struct Entity
{

   static int x,y;//stati后这个类只能有一个实例
    //如果在print中static可以更好理解
   static void Print()//如果仅结构体没有static,是无法访问的此函数的,因为静态方法中没有类实例,不知道具体访问哪一个x,y
    {
        std::cout<<x<<","<<y<<std::endl;
    }
};
//static后用这个链接参数,否则会链接失败
int Entity::x;
int Entity::y;
//这就是我们最初的非静态类方法的实例,而只有静态方法相对于去掉Entity e
//static void Print(Entity e){
//    std::cout<<e.x<<","<<e.y<<std::endl;
//}
int main()
{
    Entity e;
    e.x=2;
    e.y=3;
    Entity e2;
    e2.x=7;
    e2.y=8;
    
    //Entity e1={5,8};//如果结构体中是static int x,y; 则会报错,xy不再是类成员

    
//Print 在static后只能这样调用
//    e.Print();
//    e2.Print();//static后结果会变成最后的一个数据调用了两次(几次取决于有多少组调用)
    Entity::Print();
    Entity::Print();//所以两次调用结果相同是很好理解滴
    
    
    //e1.Print();
    std::cin.get();
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值