局部类中不能说明静态成员函数,并且所有的成员函数必须定义在类体内 ,为什么?
发布网友
发布时间:2022-07-28 06:45
我来回答
共1个回答
热心网友
时间:2023-11-04 05:45
#include <iostream>
using std::cout;
using std::endl;
int main() {
class local_class {
public:
static void print() {
cout << "Inside a static member function of a local class" << endl;
}
};
local_class::print();
return 0;
}
以上代码在main函数中申明了一个局部类,并且定义了一个静态成员函数,该代码在g++下编译运行通过,所以至少可以说,并不是所有的编译器都不允许局部类中申明静态成员函数。
另外,函数必须定义在类体内,这是比较显然的吧,你看上面的local_class,他是定义在一个函数内部的,他的范围只在这个函数中,你要如何定义在外部,你这个问题就像在问,上面的main函数为什么不可以像下面这样:
class local_class {
public:
static void print();
};
void local_class::print() {}
};
那我只能说,语法不允许呗,就是这样。如果你要问为什么语法不允许,那这是编程语言设计的问题了,你确定你想要深入研究这个问题?
为什么C#要引入局部类概念
通常局部类用于只让外面的类使用。其它都不能访问。你可以用局部变量比照类级成员变量来理解。
通过v$lock 查看事物槽 bitand后面为什么加0
因此,局部类(在函数中定义的类),不能定义静态成员。 在类中定义的静态成员函数。分享类的所有对象,你可以使用类名::函数名直接调用的时候。 静态成员函数只能访问静态成员,因为成员不是静态的。 静态初始化依赖(最好避免)。参见iostream的实现(CIN,COUT和CERR是在不同的文件中的静态对象)或其他(实际上无名!)方法...
JAVA中局部内部类和匿名内部类的特点和作用?最好能详细说明,谢谢各位...
1、成员内部类: 即作为外部类的一个成员存在,与外部类的属性、方法并列。注意:成员内部类中不能定义静态变量,但可以访问外部类的所有成员。public class Outer{private static int i = 1;private int j=10;private int k=20;public static void outer_f1(){ //do more something}public void out_f2(){ /...
C#中,静态类和非静态类的区别是什么?
静态类是不能实例化的,我们直接使用它的属性与方法,静态类最大的特点就是共享。 静态类中的所有成员必须是静态的。 静态类可以有静态构造函数,静态构造函数不可继承。 静态构造函数可以用于静态类,也可用于非静态类。 静态构造函数无访问修饰符、无参数,只有一个 static 标志。 静态构造函数不可被...
派生类概念描述
在函数结束时,该范围消失。在函数说明中,参量名称同样在局部范围中,且在说明结束时消失。缺省参量名称在参量范围中,但不能访问局部变量和非静态类成员。缺省参量值在函数调用时确定,但在函数说明的原始范围内给定。在成员函数中,缺省参量总是在类范围中。
匿名内部类,内部类,静态内部类的区别和联系
Java语言允许在类中再定义类,这种在其它类内部定义的类就叫内部类。内部类又分为:常规内部类、局部内部类、匿名内部类和静态嵌套类四种。1、静态内部类定义 静态内部类,定义在类中,任何方法外,用static定义;静态内部类只能访问外部类的静态成员。生成(new)一个静态内部类不需要外部类成员:这是...
public final static 。。。是什么意思?
2、静态成员函数 与静态数据成员一样,我们也可以创建一个静态成员函数,它为类的全部服务而不是为某一个类的具体对象服务。静态成员函数与静态数据成员一样,都是类的内部实现,属于类定义的一部分。普通的成员函数一般都隐含了一个this指针,this指针指向类的对象本身,因为普通成员函数总是具体的属于某个类的具体对象...
为什么main函数内的变量是全局变量
(3)全局变量一定是定义在函数外部的。函数分类 从用户使用的角度看,函数有两种:1、标准函数,即库函数。这是由系统提供的。2、用户自定义的函数。可以解决用户的专门需要。二、从函数的形式看,函数分两类:1、无参函数。printstar和print_message就是无参函数。在调用无参函数时,主调函数并不将...
一个java内部类有几个分类?
由于static内部类不具有任何对外部类实例的引用,因此static内部类中不能使用this关键字来访问外部类中的实例成员,但是可以访问外部类中的static成员。这与一般类的static方法相通。局部内部类:在方法体或语句块(包括方法、构造方法、局部块或静态初始化块)内部定义的类成为局部内部类。局部内部类不能加...
JAVA中的属性、方法、构造器,你真的弄懂了吗?
成员变量局部变量声明的位置直接声明在类中方法形参或内部、代码块内、构造器内等修饰符四种权限修饰符、final等不能用权限修饰符修饰、可以用final修饰初始化有默认初始化没有默认初始化,必须显式赋值内存加载位置堆空间或静态域内栈空间二、初始化赋值当一个对象被创建时,会对其中各种类型的成员变量自动...