zoukankan      html  css  js  c++  java
  • C++ 构造函数的对象初始化列表

    //构造函数的对象初始化列表
    #define _CRT_SECURE_NO_WARNINGS
    #include<iostream>
    using namespace std;
    
    class PointA{
    public:
        PointA(int _x){
            x = _x;
        }
        void GetX(){
            printf("PointA的成员变量%d
    ",x);
        }
    private:
        int x;
    };
    
    class PointB{
    public:
        //构造函数的初始化列表
        PointB(int _a, int _b) :pa(_b), pa3(_b), pa2(_b)
        {
            //备注:先初始化 pa,其次pa2,再次pa3,与对象初始化列表没有关系,只与成员变量的定于顺序有关系
            //PointB的对象在成员变量之后初始化
            a = _a;
        }
        void GetA(){
            pa.GetX();
            printf("PointB的成员变量a的值是%d
    ",a);
        }
    private:
        int a;
        PointA pa;
        PointA pa2;
        PointA pa3;
    };
    
    
    void ProtectA(){
        //PointB pb1; //报错 error C2512: “PointB”: 没有合适的默认构造函数可用
        //分析:类PointB定义了有参构造函数,所以系统不再提供无参构造函数
        PointB pb2(3, 4);
        pb2.GetA();
    
    }
    
    void main(){
        ProtectA();
    
        system("pause");
    }
    /* 初始化列表之数组初始化 */
    
    #include <iostream>
    #include <string>
    
    class Teacher
    {
    public:
        //构造函数
        Teacher() :_name(""), _studentId{ 0 }
        {
        }
    
        //构造函数
        Teacher(const std::string &name, unsigned int *a) :_name(name), _studentId{ a[0],a[1],a[3],a[4],a[5],a[6],a[7],a[8],a[9] }
        {
        }
    
        //析构函数
        ~Teacher()
        {
        }
    
    public:
        //打印学生
        void show(void)
        {
            printf("=======Teacher name[%s]===============
    ", this->_name.c_str());
            for (int i = 0; i < 10; i++)
            {
                printf("%5d", this->_studentId[i]);
            }
            printf("
    ");
        }
    
    private:
        std::string _name;
        unsigned int _studentId[10];
    };
    
    void test()
    {
        Teacher t1;
        unsigned int a[10] = { 0,1,2,3,4,5,6,7,8,9 };
        Teacher t2("jack", a);
    
        printf("------t1 start-----
    ");
        t1.show();
        printf("------t1 end-----
    ");
    
        printf("------t2 start-----
    ");
        t2.show();
        printf("------t2 end-----
    ");
    }
    
    int main()
    {
        test();
        return 0;
    }
  • 相关阅读:
    【JAVA】集合的使用:约瑟夫问题
    【JAVA】第八章:集合
    【数据结构】二叉树
    【数据结构】串
    【数据结构】KMP算法
    【java】快速入门:前八章内容总结
    【数据结构】停车场问题
    【实验向】问题:假设计算机A和计算机B通信,计算机A给计算机B发送一串16个字节的二进制字节串,以数组形式表示:
    【数据结构】括号的匹配问题
    CSS
  • 原文地址:https://www.cnblogs.com/zhanggaofeng/p/5608081.html
Copyright © 2011-2022 走看看