-
2017-07-21 21:57:17
下列有关静态成员函数的描述中,正确的是:
A、静态数据成员可以在类体内初始化
B、静态数据成员不可以被类对象调用
C、静态数据成员不受private控制符作用
D、静态数据成员可以直接用类名调用答案:D
A,静态成员属于类,而不是属于某个特定的对象,它是由该类的所有对象共享的,因此不能在类的构造方法中初始化
B,静态成员属于该类所有对象公有,可以被类对象调用
C,静态成员收private的限制
D,静态成员属于类和该类的所有对象,可以用类名直接调用更多相关内容 -
在c++中,下列描述错误的是( )
2020-09-12 20:42:12A创建对象前,静态成员不存在 B静态成员是类的成员 C静态成员不能是虚函数 D静态成员函数不能直接访问非静态成员 答案:A 解析: 静态的使用注意事项: 1.静态方法只能访问静态成员(包括成员变量和成员方法) 非...A创建对象前,静态成员不存在
B静态成员是类的成员
C静态成员不能是虚函数
D静态成员函数不能直接访问非静态成员答案:A
解析:
静态的使用注意事项:1.静态方法只能访问静态成员(包括成员变量和成员方法)
非静态方法可以访问静态也可以访问非静态
2.静态方法中不可以定义this,super关键字
因为 一个类中,一个static变量只会有一个内存空间,虽然有多个类实例,但这些类实例中的这个static变量会共享同一个内存空间。静态方法在优先于对象存在,所以静态方法中不可以出现this,super关键字。
3.主函数是静态的。
程序运行的时候,静态成员已经加载在内存里面了,但是包含静态成员的对象共享这些静态成员,
比方说,A有一个静态成员public static int i;那么程序运行的时候,这个i就加载进内存了,A的所有对象的i变量都指向这个静态空间的i,也就是说创建对象之前,它就占空间了
1:只有类的成员函数才能说明为虚函数;
2:静态成员函数不能是虚函数;
3:内联函数不能为虚函数;
4:构造函数不能是虚函数;
5:析构函数可以是虚函数,而且通常声明为虚函数 -
C++类的静态数据成员和静态成员函数
2022-04-26 10:16:05一些类对象可能会具有...因此,C++提供了静态数据成员来描述类对象相同的属性。 静态数据成员 类的静态数据成员是属于这个类的,而不是属于某个对象的。 我们定义一个手机类来说明一下: class redmik30pro { p目录
公有属性
一些类对象可能会具有一些相同的属性,如果用普通数据成员来描述这些相同的属性,这意味着我们需要给每个对象的这个数据成员设定相同的值,如果改变类对象相同的属性,那么意味着我们需要对它们统一操作,这就有可能出现它们的值会不一样的情况,如果用全局变量来描述它们相同的属性,就会破坏类的独立性。
我们需要一个成员为所有对象所公有,而且在需要更新这个公有属性的时候只需修改一次。
因此,C++提供了静态数据成员来描述类对象相同的属性。
静态数据成员
类的静态数据成员是属于这个类的,而不是属于某个对象的。
我们定义一个手机类来说明一下:
class redmik30pro { private: int old; static int battery; public: static void change(); void use(); };
我们先不关注这个类的成员函数,先来看它的数据成员,对于一款特定的手机,那么它的电池容量一般情况下是大家都一样的,所以我们将它定义成了静态数据成员。
在类定义的时候非静态数据成员是不分配内存的,只有在创建类对象的时候才分配内存,但静态数据成员是要分配内存的,因为它是属于类的,只有一块内存,所以要初始化它,而且不能在类的声明中初始化,必须要在类外初始化,写成这样:
int redmik30pro::battery;
这是不赋初始值的情况,系统会默认给它赋初始值为0,下面是赋初始值的写法:
int redmik30pro::battery=4700;
如果你不初始化静态数据成员,系统会报编译错误。
静态数据成员的访问受类的访问权限控制。如果定义为私有,则可以在类内访问到。
静态成员函数
一般都是在静态成员函数中修改静态数据成员,在刚刚的手机类声明中的成员函数:
static void change();
就是静态成员函数。
我们给它来一个类外定义:
void redmik30pro::change() { battery-=10; }
要注意的是,静态成员函数只能访问静态数据成员和静态成员函数,不能访问非静态数据成员,如果要访问非静态数据成员,可以通过类对象名加下标点这种方式访问。
但是非静态成员函数可以任意地访问静态成员函数和静态数据成员。
那静态成员函数存在的意义是什么?
首先,可能你在做题的时候,题目要求你使用静态成员函数完成任务……
开个玩笑啦……
静态成员函数没有this指针,因为它在类创建的时候就存在了,在没有创建类对象的时候就已经存在静态成员函数,而普通函数必须在类对象被创建的时候才能被使用,但静态成员函数可以在类对未创建之前使用,像这样:
int main() { redmik30pro::change(); }
合法。
简而言之,静态成员函数是服务于类的,而不是某个类对象,它的方便在于不需要定义类对象就能使用。
-
下面对 C++ 静态数据成员的描述中,正确的是?
2016-07-18 17:22:42下面对静态数据成员的描述中,正确的是? 正确答案: D 你的答案: 空 (错误) 静态数据成员可以在类体内进行初始化 静态数据成员不可以被类的对象调用 静态数据成员不受private控制符的作用 ... -
以下关于Python缩进的描述中,错误的是
2020-12-04 07:56:07以下关于Python缩进的描述中,错误的是在工业企业综合生产计划工作中,对品种指标的优化可采用A:销售收入和利润分析法B:线性规划法C:销售人员意见综合法D:盈亏平衡分析法下面对静态数据成员的描述中,正确的是A:类的... -
C++中静态成员变量和静态成员函数的用法
2018-10-04 15:26:28昨天在修改项目函数功能时,在其中一个类中添加了一个静态成员变量和两个静态成员函数,结果在链接时出现一个非常典型的错误:“The follwing symbols referenced in processor “p0” could not be resolved:Class:... -
C++类静态成员变量与类静态成员函数
2018-08-10 10:40:22当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有... 静态成员变量不能在类中初始化,实际上类的定义只是在描述对象的蓝图,在其中指定初值是不允许的。也不能在类的构造... -
关于错误:非静态成员引用必须与特定对象相对
2018-06-22 09:44:00问题描述: 在Mymethod中,有static函数,有普通函数,如果想在static函数中调用普通函数,会报标题错误。 问题原因: static函数是静态函数,可以有类名::fun直接调用,即使没有Mymethod对象也可以调用,不需要... -
C++类静态数据成员与类静态成员函数
2017-05-30 22:18:45C++类静态数据成员与类静态成员函数当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例... -
类的静态成员函数和静态成员变量的使用
2017-12-08 13:26:34C++类静态成员与类静态成员函数 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有... -
类内静态成员变量的定义和声明
2021-02-24 14:33:09其中,在替代#define时的第二方案中提到了类内静态成员变量的使用方法。 一般情况下,C++要求变量的使用必须遵循先定义后使用,对于仅仅被声明而从未被定义的变量,编译器不予通过。但是这种情况在C++类内静态变量的... -
6 静态成员与友元【C++】
2022-04-26 13:16:046 静态成员与友元【C++】 -
对象和类——类的静态成员
2018-05-29 10:07:53因为静态成员变量并不属于某个对象,所以我们可以通过类名来直接访问公有静态成员变量。也可以通过对象名访问公有成员变量。 2. 静态成员变量的特性与全局变量相同 静态成员变量实际在类外单独分配空间,在... -
C++对象的生存周期和类的静态成员
2018-01-04 19:22:50对象的生存周期 静态生存周期:全局变量具有静态生存周,局部变量的静态数据的特点:函数内的静态变量,不会随着函数调用...静态成员在每个类中只有一个副本,由该类的所有对象共同维护和使用,从而实现了同一类的不同 -
C++实例 静态成员的引入——静态数据成员的定义、调用,静态成员函数的实现、调用。
2017-10-18 20:34:16定义字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户数量;定义静态函数ChangeServerName()改变服务器名称。 #include using namespace std; class Client { ... -
C++类内静态成员的内存释放问题
2020-07-03 18:31:09问题:简答描述下吧: 我的测试程序里, new了这样类的对象的指针,并加载了资源,进行了一系列的操作后,我delete掉这个指针,然后又去做别的操作,但是发现delete的操作并没有释放掉这个类对象加载的资源内存,... -
C++静态成员函数和静态数据成员
2014-08-05 22:47:10当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,... 静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝 -
类的静态成员函数和静态数据成员
2015-10-10 21:31:27一、基本知识当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个...静态数据成员不能在类中初始化,实际上类定义只是在描述对象的蓝图,在其中 -
3-6 静态数据成员与静态成员函数
2016-09-20 19:07:063-6 静态数据成员与静态成员函数 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 通过本题目的练习可以掌握静态数据成员和静态成员函数的用法 要求设计一个点类Point,它... -
静态类,静态成员 总结
2012-08-26 16:37:41从级别来分,类的成员包括静态成员和动态成员。静态成员是类级别,不属于类的实例,而实例成员则属于类的实例(对象)。 从功能来分,类的成员包括字段、属性、方法、索引器、构造函数等,其中字段属于数据成员... -
C++中的类静态成员及静态成员函数
2014-07-28 12:55:19静态成员 -
静态成员及方法
2015-01-06 22:20:35静态成员不可在类体内进行赋值,因为它是被所有该类的对象所共享的。你在一个对象里给它赋值,其他对象里的该成员也会发生变化。为了避免混乱,所以不可在类体内进行赋值 当将类的某个数据成员... -
【C++】类的静态成员函数和静态成员变量的使用
2015-07-10 17:46:07C++类静态成员与类静态成员函数 当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享。各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个... -
类静态字段初始化错误导致的ExceptionInInitializerError和NoClassDefFoundError
2019-05-20 13:56:03JDK中对ExceptionInInitializerError的描述是: 在静态初始化程序中发生了意料之外的异常的信号。在一个静态初始化程序求值的时候,或者静态字段初始化的时候发生了异常,就会抛出一个ExceptionInInitializerError... -
下面有关java final的基本规则,描述错误的是?
2019-03-19 15:26:15下面有关java final的基本规则,描述错误的是? Afinal修饰的类不能被继承 Bfinal修饰的成员变量只允许赋值一次,且只能在类方法赋值 Cfinal修饰的局部变量即为常量,只能赋值一次。 Dfinal修饰的方法不允许被子类... -
关于static变量,请选择下面所有说法正确的内容。
2021-05-21 02:39:36static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖... -
深入理解多态,为什么说静态成员无多态特性?
2017-03-02 18:34:36这是前不久做的一道关于静态成员与静态方法特性的题,真的不做下题都不知道自己的基础究竟是有多浅薄,当然这里指对多态的理解一、先回顾下静态成员与静态变量吧,static关键字参考书籍《Java编程思想》 ... -
静态数据成员
2015-03-04 22:19:16static数据成员必须在类体之外进行定义。通常在定义时才进行初始化。但是,当类型为const static时的整形时可以在类体内进行初始化...静态数据成员可以被private之类的修饰作用,被private修饰之后,只有类的友元和成员 -
成员变量、类变量(静态变量)、局部变量的区别
2017-08-03 20:31:04如果局部变量的名字和成员变量的名字相同, 要想在该方法中使用成员变量,必须使用关键字this [java] view plain copy class People { String name = "类体重定义的name"; -
C++ 静态成员和静态成员函数
2015-04-20 08:14:36在C++中,静态成员是属于整个类的而不是某个对象,静态成员变量只存储一份供所有对象共用。使用惊涛成员变量可以实现多个对象之间的数据共享而不会破坏隐藏的原则, 保证了安全性还可以节省内存。 静态成员的...