zoukankan      html  css  js  c++  java
  • C++学习笔记3——类的封装(1)

    封装:

      1、把属性和方法进行封装。

      2、对属性和方法进行访问控制。

    class和struct的区别:

      class和struct的唯一区别是默认的访问权限不一样。struct的默认访问权限是public,class的默认访问权限是private。

    访问控制符:

      1、public:成员在整个程序内可以被访问,public成员定义类的接口。

      2、private:成员可以被类的成员函数访问,但不能被使用该类的代码访问,private部分封装了类的实现细节。

      3、protected:成员可以被类和派生类访问,但不能被使用该类的代码访问。

    类的构造函数:

      1、构造函数的名字与类名相同。

      2、构造函数在定义时可以有参数也可以无参,但没有任何返回类型的声明。

      3、构造函数在变量定义时自动调用。

    class Test
    {
    public:
        Test() = default;//类中定义了有参构造函数后系统将不会产生默认构造函数,Test() = defualt可以重新产生默认构造函数。
        Test(int num);      
    };

    类的析构函数:

      1、析构函数的名字与类名相同,名字头加~。

      2、析构函数没有参数也没有任何返回类型的声明。

      3、析构函数在对象销毁时自动被调用。

    class Test
    {
    public:
        ~Test();      
    };

    类的拷贝构造函数:

    class Test
    {
    public:
        Test(const Test &obj);//一种特殊的构造函数,用一个对象出事化另一个对象,也存在深浅拷贝问题,编译器提供的是浅拷贝
    };
    
    class Test2
    {
    public:
        Test2(char name, int num);
        Test2(char name) :Test2(name, 0){}  //委托构造函数
    };

    拷贝构造函数被调用的时机:

    1. 当用类的一个对象去初始化该类的另一个对象(或引用)时系统自动调用拷贝构造函数实现拷贝赋值。

    Test t1;
    
    Test t2(t1);
    Test t3 = t1;

    2. 若函数的形参为类对象,调用函数时,实参赋值给形参,系统自动调用拷贝构造函数。

    3. 当函数的返回值是类对象时,系统自动调用拷贝构造函数,同时返回一个匿名对象。

      匿名对象的生命周期只存在于一行,当无类变量接时,将会直接调用析构函数;当有类变量接时,会直接将匿名变量转换成类变量。

    类的组合:

    class A
    {
    public:
        A(int index)
        {
            this->a = a;
        }
    
    private:
        int a;
    };
    
    class B
    {
    public:
        B(int a1Init, int a2Init) :a1(a1Init), a2(a2Init), b(3)//类的初始化列表,含有其他类(带有参构造函数)和const变量必须使用类的初始化列表进行初始化
        {
            ;
        }
    
    private:
        A a1;
        A a2;
        const int b;
    };

    类的组合的调用顺序:

      1、当类中有成员变量是其它类的对象时,首先调用成员变量的构造函数,调用顺序与声明顺序相同,之后调用自身类的构造函数。

      2、析构函数的调用顺序与对应的构造函数调用顺序相反。

       

  • 相关阅读:
    VMware虚拟机下Centos8 设置静态IP地址
    maven插件使用及dockerfile插件多模块下打包
    Docker开启远程访问、IDEA Docker 连接 linux 上的 Docker
    Docker打包错误:Failed to execute goal com.spotify:docker-maven-plugin:1.2.0:build (default-cli) on project security
    Idea 中 Docker 的 log 乱码
    oracle11G 已开启监听,但远程连接依旧无监听解决过程
    sql server特殊功能:临时表是否存在
    sql server object_id()的应用
    sql server系统表详细说明
    SQL行转列汇总
  • 原文地址:https://www.cnblogs.com/codelu/p/4623170.html
Copyright © 2011-2022 走看看