查看: 701|回复: 0

[原创图文] C++关键字static list类的使用方法

[复制链接]

35

主题

47

帖子

3

精华

解密专家

Rank: 16

学币
380
荣耀
0
rank
0
违规
0
发表于 2021-1-25 15:17:14 | 显示全部楼层 |阅读模式
本帖最后由 鸦领主 于 2021-1-25 15:19 编辑

1.用对象或引用的区别
a)对象做参数,会在被调函数中进行数据复制,浪费数据复制的时间
b)引用或指针做参数,不会在被调函数中进行数据复制(只有一个4个字节的指针变量)
c)对象做返回值,会在主调函数进行隐含的数据复制,浪费数据复制的时间
d)引用或指针做返回值,不会进行数据复制(只有一个4个字节存在eax寄存器里面)

2.做左值的函数
a)几乎所有的c语言函数都不能做=符号的左值
b)函数的返回值是指针类型时,可以使用*符号之后做左值
c)函数的返回值是结构体指针时,可以使用->等符号做左值
d)函数的返回值是引用类时,可以直接做左值
列如:
    Data &GetAt(POSITION p)//此时返回值是引用,那么说明可以直接做左值
    {
        return ((SNode*)p)->data;//但是使用要转换一下
    }
GetAt(p)=new1;//将p指向的地址的数据的内容替换成新的数据

static关键字的用法
1.static局部变量的特点
a)地址在全局区
b)感觉只有第一次进入函数时初始化)实际上在还进入main函数以前就初始化了
c)生命期在离开main函数以后结束
d)每次进入函数时不重新初始化,保留进入函数之前的数值

2.static成员变量的用法:
a)当类内的变量前加上static关键字,就是静态成员变量;
b静态成员变量的地址在全局区,是全局性质的变量;
c)只是名义上划归为某个类内,但是该类的空间不包括静态成员变量
d)调用放法可以用对象或this指针,也可以直接指定类名加定义域去调用;
e)静态成员变量一般定义公有,踉对象是无关的;

3.static成员函数:
a)一个成员函数如果前面加上static关键字就是全局函数的性质;
b只是名义上划归为莫个类内,函教内没有this指针的形式参数,
c)静态成员函数内不可以通过this指针调用本类的成员(函数和变量)。

二、stdlist类的用法
#include<list>
#include<iostream>
using namespace std;
int main()
{
    list<int> list1;
    list1.push_back(11);//push_back相当于CList中的AddTail
    list1.push_back(77);
    list1.push_back(66);
    list1.push_back(45);
    list<int>::iterator p = list1.begin();//begin()相当于CList中的GetHeadPosition
    //list<int>::iterator这个应该是类对象(迭代器)
    while (p!=list1.end())//这个链表是环形的,有一个额外的节点,头部和尾部连接着额外的节点,end就代表这个节点
    {
        cout << *p << endl;//CList中是用GetAt()
        p++;
    }
    return 0;
}

详细参考:https://docs.microsoft.com/zh-cn/cpp/standard-library/list-class?f1url=%3FappId%3DDev16IDEF1%26l%3DZH-CN%26k%3Dk(LIST%252Fstd%253A%253Alist)%3Bk(std%253A%253Alist)%3Bk(list)%3Bk(DevLang-C%252B%252B)%3Bk(TargetOS-Windows)%26rd%3Dtrue&view=msvc-160#rbegin

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的最好奖励,还可以获得学币奖励,请尊重作者的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
学逆向论坛-免费的逆向学习论坛
关闭

论坛公告上一条 /1 下一条

快速回复 返回顶部 返回列表