• 静态成员函数为什么不能访问本类中的非静态成员?


    和静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分。如果要在类外调用公用的静态成员函数,要用类名和域运算符“∷”。如
    Box∷volume(
    );
    实际上也允许通过对象名调用静态成员函数,如
    a.volume(
    );
    但这并不意味着此函数是属于对象a的,而只是用a的类型而已。
    静态成员函数的作用是为了能处理静态数据成员。
    可以说,静态成员函数与非静态成员函数的根本区别是:非静态成员函数有this指针,静态成员函数并不属于某一对象,它与任何对象都无关,静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。
    在C++程序中,静态成员函数主要用来访问静态数据成员,而不访问非静态成员。假如在一个静态成员函数中有以下语句:
    cout<<height<<endl;            
    //若height已声明为static,则引用本类中的静态成员,合法
    cout<<width<<endl;             
    //若width是非静态数据成员,不合法
    但是,并不是绝对不能引用本类中的非静态成员,只是不能进行默认访问,因为无法知道应该去找哪个对象。如果一定要引用本类的非静态成员,应该加对象名和成员运算符“.”。如
    cout<<a.width<<endl;           
    //引用本类对象a中的非静态成员
    假设a已定义为Box类对象,且在当前作用域内有效,则此语句合法。

  • 相关阅读:
    C#中int和System.Int32理解总结
    谈C#中的Delegate
    Html的安全隐患
    Oracle性能优化
    Selenium私房菜系列7 深入了解Selenium RC工作原理(2)
    java取整和java四舍五入方法
    Android SufaceView 背景设置透明
    android图片加水印,文字
    关于android集成开发环境引入jar包错误的问题
    android bitmap绘制文字自动换行
  • 原文地址:https://www.cnblogs.com/hualimengyu/p/3739591.html
Copyright © 2020-2023  润新知