• C++杂分析


    class word{
    public:
        word(){cout<<"word constructure 
    ";}
        word(int i){cout<<"word 1 constructure 
    ";}
    };
    
    class Text{
    public:
        word w;
        Text():w(1)
        {cout<<"text constructure 
    ";}
    };
    
    int main()
    {
     Text t;
    }

    1.自己定义的类,他自己可以隐式初始化,调用她自己的默认够着函数,但是根据实验,好像只能调用默认够着函数

    2.初始化列表和成员函数的构造一共值初始化一次,如果有列表,他自己就不构造了

    3.初始化列表中的元素和成员的初始化,在构造函数之前运行

    问题:const static 继承 virtual 特殊成员函数 这一堆关键词混合使用的时候会发生什么情况,这个需要弄明白

    静态成员的使用

    #include<iostream>
    #include<vector>
    using namespace std;
    
    class Text{
    public:
        static const int a = 1; ///static 数据成员独立与该类存在
        ///static int b = 1; ///静态成员也不能这么初始化变量
        static int b;
        static vector<int> d ;///估计这次他就没有办法自己初始化了
        static void f1(){cout<<"f1"<<endl;} ////成员函数没有this形参,他可以直接访问所属的类的static成员,不能使用非静态的
        static void f2(){b=2;cout<<b<<endl;}
        static void f4(){b++;cout<<b<<endl;}
        Text(){ f4();}
        ///void f3(){b=3;cout<<b<<endl;}非静态函数,无法调用
        //Text():a(2),b(2){} ///C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化
    };
    
    ///文章中解释说派生类也可以共享静态成员b,一会要试试
    ///静态数据成员的类型可以是所属类的类型,而普通数据成员则不可以。普通数据成员的只能声明为 所属类类型的 指针或引用。举例如下
    ///静态成员函数不可以调用类的非静态成员。因为静态成员函数不含this指针
    ///静态成员函数不可以同时声明为 virtual、const、volatile函数。举例如下: 
    
    class Paper:public Text{
    
    };
    
    int Text::b = 0;
    //int Text::f1(){cout<<"f1"<<endl;}
    
     int main()
    {
        Text::f1();///可以直接调用
        Paper::f1();///继承后也可以使用
        Paper::f2();///静态成员函数可以调用静态变量
        ///Paper::f3();非静态函数,无法调用
        Text* t = new Text[5];///可以实现计数的功能
     }
    berkeleysong
  • 相关阅读:
    Tarjan求LCA
    过滤器、监听器、拦截器的区别
    java操作Redis缓存设置过期时间
    Redis和Memcached区别,Redis的过期策略
    缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    Memcached和Redis在Linux下的安装
    jmeter学习
    用FastDFS一步步搭建文件管理系统
    version control
    关于Linux的防火墙命令和端口占用查询
  • 原文地址:https://www.cnblogs.com/berkeleysong/p/3738859.html
Copyright © 2020-2023  润新知