• C++的一些关键字


    this:

            this指针是系统自动生成的隐藏式指针        

            不是对象的一部分,是类的作用域内的

            类的普通成员函数访问普通成员变量时,this指针总是指向调用者对象

            通常是省略的,当成员变量与传入形参名字一样时,最好使用this指针

    1. int num;
    2. void setVal(int num) {
    3. //num = num;
    4. this->num = num;
    5. std::cout << "num = " << num << std::endl;
    6. std::cout << "this->num = " << this->num << std::endl;
    7. }

    static:

            static成员:在C++类中,证明成员时,加上static关键字

            静态成员分为静态函数成员与静态数据成员

            没有this指针,也不能使用普通成员变量;static成员在class类之前,生命周期比类长,不属于此类

            单例:创建一个只能实例化一个对象的类(私有构造函数、私有拷贝构造函数、私有静态类对象、返回值为类对象的公有静态类成员函数)

    1. class Stu
    2. {
    3. public:
    4. Stu();
    5. ~Stu();
    6. //static成员在class类之前,生命周期比类长
    7. static int data;//所有Stu的对象使用一个data的内存
    8. static void test();
    9. private:
    10. };
    11. Stu::Stu()
    12. {
    13. }
    14. Stu::~Stu()
    15. {
    16. }
    17. int Stu::data = 99;
    18. void Stu::test()
    19. {
    20. std::cout << "test ===================== " << std::endl;
    21. }
    22. Stu obj1;
    23. Stu obj2;
    24. std::cout << "data11111 = " << obj1.data << std::endl;
    25. obj1.data = 1234;
    26. std::cout << "data11111 = " << obj1.data << std::endl;
    27. std::cout << "data2222222 = " << obj2.data << std::endl;
    28. Stu::data = 7465756;
    29. std::cout << "data11111 = " << obj1.data << std::endl;
    30. std::cout << "data2222222 = " << obj2.data << std::endl;
    31. std::cout << "data2222222 = " << Stu::data << std::endl;
    32. Stu::test();
    33. obj1.test();
    34. obj2.test();

    const:

           常量数据成员:成员函数列表给常量赋值

           常量成员函数:不能对类的数据成员作修改(只看不修改),只能修改静态成员

    1. class A
    2. {
    3. public:
    4. A();
    5. ~A();
    6. int dd;
    7. const int fd;
    8. void fun() const
    9. {
    10. std::cout << "const fun111111 = " << std::endl;
    11. }
    12. void fun2() const;
    13. static int dsfds;
    14. private:
    15. };
    16. int A::dsfds = 0;
    17. A::A():fd(65)
    18. {
    19. }
    20. A::~A()
    21. {
    22. }
    23. void A:: fun2() const
    24. {
    25. std::cout << "const fun 222222= " << std::endl;
    26. dsfds = 56;
    27. std::cout << "const fun 222222==== dsfds========" << dsfds <<std::endl;
    28. this->dsfds = 9999;
    29. std::cout << "const fun 222222==== dsfds========" << this->dsfds << std::endl;
    30. }
    31. A myA;
    32. std::cout << "myA.fd = " << myA.fd << std::endl;
    33. myA.fun();
    34. myA.fun2();

    firned:

            封装是类的特性之一,友元是打破封装的一种手段(可以访问private变量)

            友元函数(可以申明类的任何属性里面)、友元类(可以创建友元对象)

            友元关系不继承

    1. class B
    2. {
    3. public:
    4. B();
    5. ~B();
    6. friend void func(B obj);
    7. int k = 4;
    8. private:
    9. int x =7;
    10. protected:
    11. int y = 78;
    12. };
    13. B::B()
    14. {
    15. }
    16. B::~B()
    17. {
    18. }
    19. void func(B obj) {
    20. std::cout << "friend ===== x= " << obj.x << ",k = " << obj.k << ",y = " << obj.y << std::endl;
    21. obj.x = 943;
    22. obj.k = 111;
    23. obj.y = 657;
    24. std::cout << "friend2222 ===== x= " << obj.x << ",k = " << obj.k << ",y = " << obj.y << std::endl;
    25. }
    26. B myB ;
    27. func(myB);
    28. std::cout << "myB.k = " << myB.k << std::endl;

            

  • 相关阅读:
    四甲基罗丹明TRITC/羧甲基荧光素6-FAM修饰PLGA纳米载体,TRITC-PLGA,6-PEG-FAM-PEG-PLGA
    微信开发工具构建npm and git切换分支
    音频采集的相关基础知识
    给自己的hexo博客个性化Volantis主题
    Pytorch环境搭建(Windows)
    告别HR管理繁琐,免费低代码平台来帮忙
    Java集合面试题
    归并排序和快速排序的两种实现
    【PyTorch深度学习项目实战100例】—— 基于AlexNet实现宠物小精灵(宝可梦)分类任务 | 第49例
    第21章 Spring事务管理之扩展篇(一)
  • 原文地址:https://blog.csdn.net/weixin_44840658/article/details/127957032