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时调用 
        } 
        
    };
    欢迎各位指点!
  • 相关阅读:
    Robot Framework学习笔记V1.0
    新炬网络亿能测试“性能测试和自动化测试”技术研讨会
    js里面关于IE和万恶的IE6的判断
    addLoadEvent(func)有关
    js call和apply[转]
    原生AJAX
    搭建Python开发环境(含Selenium WebDriver安装)
    Python实现随机生成指定数量字符串的函数(方法)记面试问题2
    学习Question持续更新Question和Answer进度20170902
    Python数组和list的区别,tuple和set的区别记面试问题1
  • 原文地址:https://www.cnblogs.com/thors/p/14333515.html
Copyright © 2011-2022 走看看