zoukankan      html  css  js  c++  java
  • C++ 基础语法&特性(3)-面向对象之特殊成员

     

    C++相关文章

     

    先介绍一下类的构造、析构等一系列函数:

       构造和析构调用顺序为:

        基类(父类)构造函数、成员类构造、本类构造(基类构造与继承顺序有关、成员类构造与定义顺序有关)

        本类析构、被包含类析构、基类析构函数

    class 类名{
        /*
            友元
                不属于类的成员,为了兼容C才加的,超出访问权限的控制
                友元是单向的、不可传递,开放出去的权限可继承(下一篇会解释) 
        */ 
        friend 返回值类型 函数名A(参数表);     //外部函数A可直接访问本类私有成员 
        friend 返回值类型 类A::类A成员函数(参数表);
        friend class 类名;    //该类所有函数均可访问本类私有成员 
        /*
            构造函数 (无须返回值) 
        */
        类名([参数表]){
            this->成员变量    //this指本类对象的指针  
            //无参的为默认构造函数, 若未定义任何构造函数,则由编译器自动生成 
            //亦可以在类外定义 类名::类名([形参表]) 
            //若定义有参构造函数,则默认的无参构造函数会被隐藏,new 类名()会报错 
        } 
        类名([参数表]):成员1(参数),指针成员2(new 类型){
            //初始化列表,可在方法声明时对成员初始化
            //初始化顺序与声明顺序有关,与初始化列表顺序无关 
            //(基类构造)、成员对象、常量成员、引用型成员,必须通过初始化列表  
        }
        
        /*
            类型转换构造函数 
        */
        类名(一个形参){
            //若只有一个参数的构造函数,则此参数类型变量可赋值给对象 
            //    类名 对象名=5 
        } 
        
        /*
            复制构造函数,有2种 一般使用const版即可 
            若封闭类/派生类的对象通过默认复制构造函数初始化,则成员对象/基类也使用复制构造函数初始化(自定义需自己写) 
            注意:此函数也为构造函数,若定义则会隐藏默认构造函数 
            只有1个参数:本类对象的[常]引用 
            调用时机:
                1. 用一个对象初始化另一个对象,类名 对象2(对象1)  或 类名 对象2=对象1
                2.作为函数的形参或返回值 
                已声明对象重新赋值则不会调用此方法(会调用重载运算符函数) 
        */
        类名(const 类名 &);
        类名(类名 &被复制对象名){
            //此时this指向新对象 
        };
        
        /*
            析构函数
        */
        ~类名(){
            //若未定义,编译器自动生成,最多1个、不可重载
            //调用时机,普通对象由编译器自动回收,new 对象为delete时调用 
        } 
        
    };
    欢迎各位指点!
  • 相关阅读:
    一些小题
    文件操作_菜单<代码>
    文件操作
    linux基础学习
    列表,元组,字典
    系统集成项目管理工程师高频考点(第六章)
    系统集成项目管理工程师高频考点(第五章)
    系统集成项目管理工程师高频考点(第四章)
    系统集成项目管理工程师高频考点(第三章)
    信息系统项目管理师高频考点(第一章)
  • 原文地址:https://www.cnblogs.com/thors/p/14333515.html
Copyright © 2011-2022 走看看