当前位置:网站首页 > 技术博客 > 正文

成员变量和类变量的区别



代码:

#include<iostream> using namespace std; int year = 55; //全局变量 int month = 56; int day = 57; void Set(int y, int m,int d) //全局函数 { year=y; //给全局变量赋值 month=m; day=d; } void PPP() //全局函数 { cout << "*global*" << endl; cout << year << " " << month << " " << day << endl; } class TimeDate { public: void Set(int y,int m,int d) //成员函数 { year=y; //给成员变量赋值 ::month=m; //给全局变量赋值 day=d; //使用::表明是全局函数 //不使用:: 按先成员函数后全局函数的顺序查找函数 ::PPP(); //使用全局函数,而不是成员函数 PPP(); //使用成员函数,而不是全局函数 } void PPP() { cout << "*local*" << endl; cout << year << " " << month << " " << day << endl; } void PPP1() { cout << "*local->global*" << endl; cout << ::year << " " << ::month << " " << ::day << endl; } private: int year; //成员变量 int month; int day; }; int main(int argc, const char argv) { TimeDate t; cout << "origin value" << endl; t.PPP(); t.PPP1(); PPP(); cout << "after global function Set work" << endl; Set(1,2,3); t.PPP(); PPP(); cout << "after member function Set work" << endl; t.Set(4,5,6); t.PPP(); PPP(); cout << "program end" << endl; return 0; }

运行结果:

origin value *local* 0 16 0 *local->global* 55 56 57 *global* 55 56 57 after global function Set work *local* 0 16 0 *global* 1 2 3 after member function Set work *global* 1 5 3 *local* 4 16 6 *local* 4 16 6 *global* 1 5 3 program end

分析与结论:

1、全局变量与成员变量同名:全局函数默认使用的是全局变量,只有通过访问对象的成员才可以获取成员变量的值;而成员函数优先使用的是成员变量,但是可以通过在成员变量名前面加上::来显式说明这是全局变量,此时成员函数使用的就是全局变量。另外,成员函数按照先成员变量后全局变量的顺序使用变量,换句话说,也就是成员函数优先使用成员变量,若变量名在成员变量中找不到时才会去查找和使用全局变量,若全局变量里面也没有变量名,则报错。

2、全局函数与成员函数同名:在类的外面,一般情况下调用的是全局函数,只有通过访问对象的成员函数才可以使用成员函数;在类的里面,调用的是成员函数,但是可以在成员函数前面加上::来显示说明需要调用的是全局函数。另外,按照先成员函数后全局函数的顺序来调用函数,换句话说,也就是优先使用成员函数,若成员函数不存在,才会去查找和使用全局函数,若全局函数里面也没有这个函数,则报错。

  • 上一篇: ubuntu1804双网卡设置
  • 下一篇: 免费dns域名
  • 版权声明


    相关文章:

  • ubuntu1804双网卡设置2025-06-30 15:30:01
  • 函数定义出现在主函数之前不必声明2025-06-30 15:30:01
  • diskgenius修复磁盘错误2025-06-30 15:30:01
  • xp电脑usb接口无法识别设备代码为9032025-06-30 15:30:01
  • 网络攻防怎么入门2025-06-30 15:30:01
  • 免费dns域名2025-06-30 15:30:01
  • DDA算法2025-06-30 15:30:01
  • c语言指向函数的指针2025-06-30 15:30:01
  • as400基础知识2025-06-30 15:30:01
  • 数字图像处理实验设计2025-06-30 15:30:01