首页 > 编程语言 > 详细

<C++基础学习二十三>定义抽象数据类型(未完待续)

时间:2019-01-17 23:16:12      阅读:162      评论:0      收藏:0      [点我收藏+]

摘要: 本篇博客仅作为笔记,如有侵权,请联系,立即删除(网上找博客学习,然后手记笔记,因纸质笔记不便保存,所以保存到网络笔记)。

  一、定义成员函数

  成员函数必须在类的内部声明,但是成员函数体可以定义在类内也可以定义在类外。成员函数通过一个名为this的额外隐式参数来访问它的那个对象。所以所有的非static成员函数都有一个隐式参数this指针,this指针是一个指针常量,我们不允许改变this指针中保存的地址。而且该this指针是作为成员函数的第一个形参。

class Test{
    public:
        void add(int i){_i += i;} //实际函数的形式是void add(Test *const this,int i)
    private:
         int _i = 0;
}    

  我们可以通过在成员函数的形参列表后增加一个const关键字,来将成员函数声明为一个常成员函数。常成员函数的实际意义其实是把this的指针的类型从指向非常量对象的常指针,声明为指向常量对象的常指针。

class Test{
public:
    void add(int i) const {_i += i;}  //实际函数的形式是void add(const Test *const this,int i)
}

  将this指针声明为一个指向常量对象的常指针,这样的成员函数中就不可以通过this指针改变此对象中的值。常量对象以及常量对象的指针或引用都只能调用对象的常量成员函数。(从函数形参匹配的角度容易理解此性质)

  编译器在编译类时,首先编译成员的声明,然后才编译成员函数的函数体,因此,成员函数体内可以随意使用类中的其他成员函数而无需在意这些成员出现的次序。

  另外在类外定义的函数形式必须要与类内声明函数的返回类型、参数列表、函数名完全匹配,所以如果类内声明了一个函数为常成员函数,那么类外定义时也必须加上const声明。(这样才能使参数列表完全匹配)

<C++基础学习二十三>定义抽象数据类型(未完待续)

原文:https://www.cnblogs.com/daisy-996/p/10284910.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!