#include <iostream> /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数访问.原因是:当前对象的地址(this)是被隐含地传递到被调用的函数的.但一个静态成员函数没有this指针,所以它无法访问非静态的成员函数. */ class a { public: static void FunctionA()//静态成员函数没有隐含的this自变量 { //menber = 1;//er…
其实我们从直观上可以很好的理解静态成员函数不能调用非静态成员变量这句话因为无论是静态成员函数还是静态成员变量,它们 都是在类的范畴之类的,及在类的整个生存周期里始终只能存在一份.然而非静态成员变量和非静态成员函数是针对类的对象而言. 然而从本质上来说类的静态成员函数的函数形参中没有默认的this指针,导致不能调用具体实例对象的成员. 下面我们来测试一下: 先在静态成员函数中调用静态成员变量: #include <iostream> using namespace std; class vpoe…
大家都知道C++中类的成员函数默认都提供了this指针,在非静态成员函数中当你调用函数的时候,编译器都会“自动”帮你把这个this指针加到函数形参里去.当然在C++灵活性下面,类还具备了静态成员和静态函数,即 class A { public: static void test() { m_staticA += ; } private: static int m_staticA; int m_a }; 此时你的test函数只能去访问m_staticA成员,而不能去访问m_a.同学可能会问,这算什…
静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的 member可能都没有分配内存.静态成员函数没有隐含的this自变量.所以,它就无法访问自己类的非静态成员 代码如下: class a{public:  static FunctionA()  {     menber = 1;  } private:  int menber;} 编译上述代码,出错.原因很简单大家都知道,静态成员函数不能访问非静态成员,这是因为静态函数属于类而不是属于整个对象,静态函数中的…
最近在 VS2010 里开发出厂烧写工具,遇到一个问题: 我创建了一个线程,在这个线程里要访问非静态成员,而这个线程函数是静态的.最后找到的办法是用对象指针来做. sourcecode: #test.h class Test { protect: static UINT threadFun(LPVOID pParam); private: int a; } #test.cpp AfxBeginThread(CTestThreadApplyDlg::threadFun, this); UINT C…
正规的C++语言标准目前(截止到C++14)应该还不支持这种调用方法.目前微软似乎在它的VC++中推行一种叫做C++/CLI的标准,有可能会支持这种调用,如果一定要用这种调用方法的话,还应该用VS2013尝试编译运行一下. 实际上,C++语言中类的静态成员函数本身应该是所有这一类对象的集体所具有的行为,就是说,不是某一个对象能够具有或者说实现的:而非静态成员函数应该是某一个对象自己的动作行为,跟本类其他对象乃至整个类关系不大,是对象依靠自己的数据以及函数参数就可以完成的行为.根据以上的讨论,我们…
c++,vc6.0,中友元函数,无法访问私有字段(private)的问题(problem),cannot access private member declared in class 'Date' 代码如下: #ifndef _DATE_H_ #define _DATE_H_ #include<iostream> using namespace std; class Date { public: Date(); Date(int y,int m,int d); void printOn();…
举个例子: 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 #include<iostream> using namespace std; class cylinder {     friend istream operator>>(istream& is,cylinder &cy); public:         inline doub…
函数 函数:即方法 函数就是一段预先设置的功能代码块,可以反复调用,根据输入参数的不同,返回不同的值. 为什么使用函数: 1.方便调用 2.代码重用,利于维护 3.便于修改,便于重构 4.简化逻辑,利于编程 1.声明函数 声明函数 Function Declaration 的三种方法 1)function 命令 function print(s) {    document.write(s+"<br/>");} 2)函数表达式 var printStr =function(…
java的static关键字 java中,static修饰的成员变量和成员方法叫静态变量和静态方法,不依赖类特定的实例,被类的所有实例共享. 静态变量或类变量 和 实例变量,区别是: 静态变量在内存中只有一个拷贝(节省内存),JVM只分配一次内存,在加载类的过程中完成静态变量的内存分配,用类名直接访问,也可以通过对象来访问(不推荐,尽量不用). 实例变量在初始化后一个实例时为该实例分配一次内存,多个实例之间的实例变量是独立的 static的方法和变量可直接用类名访问: java中,Static类…