首页 > 试题广场 > 关于C++/JAVA类中static 成员和对象成员的说法正
[单选题]
关于C++/JAVA类中static 成员和对象成员的说法正确的是?
  • static 成员变量在对象构造时生成
  • static 成员函数在对象成员函数中无法调用
  • 虚成员函数不可能是static 成员函数
  • static 成员函数不能访问static 成员变量
推荐
答案:C
static为成员变量或函数,在类初始化是加载完成,可以被成员函数调用或访问
编辑于 2015-01-04 22:51:30 回复(6)
C,
static成员变量是在类加载的时候生成的
static成员函数既可以通过类名直接调用,也可以通过对象名进行调用
虚函数是C++中的,虚函数不可能是static的
static成员函数可以访问static成员变量
发表于 2015-08-17 15:42:40 回复(7)
在java语言中虚函数指代的就是抽象方法,抽象方法中不能用private,static, synchronized,native等修饰词修饰。
发表于 2015-11-08 18:10:39 回复(5)
静态可以访问静态,静态不能访问非静态,非静态可以访问静态,非静态可以访问非静态
发表于 2016-05-20 11:08:46 回复(0)
媛头像

答案:c   解释,(1)类的static成员变量属于该抽象类,需要在类定义时初始化,不可以在对象的构造函数中初始化。(2) static成员函数在对象成员函 数中可以调用,同属于一个类作用域 (3)正确,static成员函数不可以声明为const和virtual,详见C++ primer  (4)static成员函数只能够访问static 成员变量。

#ifndef TEST_H
#define TEST_H
#include <stdio.h>
class test
{
private:
intsubmember;
static int  member;
public:
static void writetest(int member)
{
test::member = member;
//test::submember = member;
}
static void display(int count)//static成员函数,属于抽象类,不属于类对象
{
printf("the count number is %d \n",count);
}
void readtest(int mem)  //对象成员函数
{
printf("helllo %d \n",test::submember);
//test::writetest(mem);// static成员函数在对象成员函数中可以调用,同属于一个类作用域,但是,static函数不能包含对stati成员的操作,否则出现错误
display(8);
}
};
#endif

#include "onceon.h"
int main(void)
{

int aa = 2;
test a ;
a.readtest(aa);
}
发表于 2015-09-30 10:07:04 回复(2)
一群人简直瞎写,这跟答案毛关系
发表于 2018-05-26 13:02:14 回复(0)

1.静态成员函数不能声明为virtual,编译会报错

2.为何static成员函数不能为virtual?两点原因:

1. static成员不属于任何类对象或类实例,所以即使给此函数加上virtual也是没有任何意义的。
2. 静态与非静态成员函数之间有一个主要的区别。那就是静态成员函数没有this指针。
发表于 2017-04-12 11:13:23 回复(0)
a:static 成员变量在加载类时就已经生成了
static成员函数在对象成员函数中是可以调用的,同一个类中直接写成员名,不同类中,常常用类名.成员名
static成员函数不是不能访问static成员变量,而是不能直接访问,可以先创建对象再访问
发表于 2018-07-16 19:04:31 回复(0)
在java语言中虚函数指代的就是抽象方法,抽象方法中不能用private,static, synchronized,native等修饰词修饰。
编辑于 2017-09-01 22:51:46 回复(0)

答案:C

A.static 修饰的代码块、变量以及方法在类加载的时候就会被加载进方法区内存

B.这里的对象成员函数指的就是没有 static 修饰的方法,也就是实例方法,在实例方法中可以通过类名.方法名或者对象名.方法名调用静态方法

C.虚函数是 C++ 中的概念,由 virtual 修饰,是为了实现多态性的,虚函数一定要通过对象调用,它是一种实例函数,所以不可能是 static 成员函数

D.因为在类加载的时候静态变量和静态方法就已经被加载进方法区内存了,所以静态方法中可以访问静态变量,访问方法与 B 中访问静态方法类似

编辑于 2020-06-13 19:19:49 回复(0)
static的学习
1、静态全局变量:全局变量加上static关键字
   
    特点:
     1、在全局数据区分配内存
     2、未出初始化的会被自动初始化为0
     3、整个文件可见,不会被其它文件所访问

2、静态局部变量:全局变量加上static关键字

    特点:
     1、在全局数据区分配内存
     2、在程序执行到该对象的声明处被首次初始化,
        之后的函数调用也不会再进行初始化
     3、始终驻留在全局数据区,直到程序运行结束
        但其作用域为局部作用域,当定义它的函数或语句块结束时,
        其作用域随之结束。

3、面向对象(类中的static关键字)
    
    3.1 静态数据成员:数据成员加上static
       
        特点:
         1、静态数据成员只分配一次,供所有对象共用
         2、static数据成员在全局数据区分配内存,
            所以没有产生类对象时其作用域就可见,
            即不产生类的实例时可以操作
         3、static成员变量是在类加载的时候生成的
    

    3.2 静态成员函数:static + 成员函数
        
        特点:
         1、无法访问类对象的非静态数据成员和非静态成员函数
         2、可以访问静态的成员和函数
         3、非静态的成员函数可以访问static的
         4、static成员函数不可以声明为const和virtua

发表于 2018-09-11 22:22:08 回复(0)
static成员变量或成员函数是属于类本身的,并不属于具体的对象。
static成员变量初始化必须放到类外面进行定义
发表于 2017-06-27 16:45:01 回复(0)
java中虚方法的定义:除了静态方法、私有方法、final方法、实例构造器、父类方法这些非虚方法外,其余都是虚方法
发表于 2020-06-17 21:18:01 回复(0)
不能把c和java分开吗???????
发表于 2020-01-26 11:27:25 回复(0)
静态数据成员不属于类的任何一个对象,所以它们并不是在创建类的对象时定义的,这意味着它们不是由类的构造函数初始化的。
发表于 2019-08-10 21:00:16 回复(0)
虚函数是C++的,在Java中是相当于抽象函数,抽象函数必须是实例方法,不能用static修饰,是非静态的。
发表于 2018-07-23 19:31:51 回复(0)
严格来说,C++的纯虚函数才是对应Java中的抽象方法。
C++中的普通虚函数类似于Java中的抽象方法,但子类不一定要实现该函数,因为虚函数提供了一个默认的实现。
虚函数不能被static修饰,因为static方法不能被重写。静态的方法可以被继承,但是不能重写。
编辑于 2018-07-22 11:37:29 回复(2)
java中虚函数指代的就是抽象方法
发表于 2020-03-07 21:01:46 回复(0)
抽象方法中不能用private,static, synchronized,native等修饰词修饰,如果强行组合就会发生检查时异常,非法的修饰符组合。
abstract和static冲突,static代表不用实例化就可以调用的方法,abstract表示需要被继承并实现的方法。


发表于 2020-02-18 15:18:57 回复(0)
虚函数就是被virtual关键字修饰的 成员函数
发表于 2020-01-16 07:17:31 回复(0)
虚函数。。。。
发表于 2019-12-09 09:30:31 回复(0)