正规的C++语言标准目前(截止到C++14)应该还不支持这种调用方法.目前微软似乎在它的VC++中推行一种叫做C++/CLI的标准,有可能会支持这种调用,如果一定要用这种调用方法的话,还应该用VS2013尝试编译运行一下. 实际上,C++语言中类的静态成员函数本身应该是所有这一类对象的集体所具有的行为,就是说,不是某一个对象能够具有或者说实现的:而非静态成员函数应该是某一个对象自己的动作行为,跟本类其他对象乃至整个类关系不大,是对象依靠自己的数据以及函数参数就可以完成的行为.根据以上的讨论,我们…
最近在 VS2010 里开发出厂烧写工具,遇到一个问题: 我创建了一个线程,在这个线程里要访问非静态成员,而这个线程函数是静态的.最后找到的办法是用对象指针来做. sourcecode: #test.h class Test { protect: static UINT threadFun(LPVOID pParam); private: int a; } #test.cpp AfxBeginThread(CTestThreadApplyDlg::threadFun, this); UINT C…
#include <iostream> /* 静态成员函数只能访问静态数据成员.静态成员函数和类以外的函数和数据,不能访问非静态数据成员,但静态成员函数或静态数据成员可由任意访问许可的函数访问.原因是:当前对象的地址(this)是被隐含地传递到被调用的函数的.但一个静态成员函数没有this指针,所以它无法访问非静态的成员函数. */ class a { public: static void FunctionA()//静态成员函数没有隐含的this自变量 { //menber = 1;//er…
最近一直看c++相关的项目,但总是会被c++类中的静态成员变量与静态成员函数的理解感觉很是模糊,不明白为什么类中要是用静态成员变量.于是在网上搜集了一些资料,自己再稍微总结下. 静态成员的概念: 静态类中的成员加入static修饰符,即是静态成员.可以直接使用类名+静态成员名访问此静态成员,因为静态成员先于类的声明而存在于内存,也可以根据类声明的对象来访问.而非静态成员必须实例化之后才会分配内存. 非静态成员的概念: 所有没有加static的成员都是非静态成员.而类被实例化后,可以通过实例化的类…
数据成员可以分为静态变量.非静态变量两种. 静态成员:静态类中的成员加入static 修饰符,即是静态成员,可以使用类名+静态成员名访问此静态成员,因为静态成员存在于内存,非静态成员需要实例化才会分配内存,所以静态成员不能访问非静态成员,因为静态成员存在于内存,所以非静态成员可以直接访问类中的静态成员. 非静态成员:所以没有加static的成员都是非静态成员,当类被实例化后,可以通过实例化的类名进行访问,非静态成员的生存期决定于该类的生存期,而静态成员则不存在生存期的概念,因为静态成员始终驻留在…
1,问完成的需求: 1,统计在程序运行期间某个类的对象数目: 1,静态成员变量满足了这个需求: 2,保证程序的安全性(不能使用全局变量): 3,随时可以获取当前对象的数目: 1,有没有什么特别的地方或边界点没有考虑到呢? 2,解决方案的尝试编程实验: #include <stdio.h> class Test { public: static int cCount; public: Test() { cCount++; } ~Test() { --cCount; } int getCount(…
于CSDN 2014-01-17 与静态数据成员一样,静态成员函数是类的一部分,而不是对象的一部分.如果要在类外调用公用的静态成员函数,要用类名和域运算符"∷".如Box∷volume( );实际上也允许通过对象名调用静态成员函数,如a.volume( );但这并不意味着此函数是属于对象a的,而只是用class a的类型而已.静态成员函数的作用是为了能处理静态数据成员. 可以说,两者的根本区别:非静态成员函数有this指针,静态成员函数并不属于某一对象,它与任何对象都无关,静态成员函数…
C++规定const静态类成员可以直接初始化,其他非const的静态类成员需要在类声明以外初始化,我们一般选择在类的实现文件中初始化,初始化的方式是书写一遍类型的定义: //A.cpp ); //使用字面量9来初始化n vector<); //调用vector的带参构造函数来初始化 一.静态成员函数中不能调用非静态成员. 二.非静态成员函数中可以调用静态成员.因为静态成员属于类本身,在类的对象产生之前就已经存在了,所以在非静态成员函数中是可以调用静态成员的. 三.静态成员变量使用前必须先初始化(…
1.静态成员函数.静态数据成员 在类中,用static修饰的成员函数被称为静态成员函数,而用static修饰的数据成员就称为静态数据成员:与普通的成员函数和数据成员不同, 静态成员函数和静态数据成员有自己独有的特点和用法,定义方法如下: class Tank{ public: static void func(void); // 声明静态成员函数 .......... private: static int m_iCount; // 声明静态数据成员 ....... } ; // 初始化静态数据…
java字段中初始化的规律: 执行以下代码,出现的结果是什么? class InitializeBlockClass{ { field=200; } public int field=100; public InitializeBlockClass(int value){ this.field=value; } public InitializeBlockClass(){ } } public class InitializeBlockDemo { /** * @param args */ pu…