static成员函数不能调用non-static成员函数

简介: 1 一般类静态成员函数不能调用非静态成员函数 2 static成员函数可以调用构造函数吗? 答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-static成员的,包括成员函数和成员变量。

1 一般类静态成员函数不能调用非静态成员函数

2 static成员函数可以调用构造函数吗?

答案是肯定的,由于static成员函数没有this指针,所以一般static成员函数是不能访问non-static成员的,包括成员函数和成员变量。

由于构造函数特殊性,它从无到有构造一个对象,因此调用它不需要一个instance,也就是不需要this指针来调用,所以在static 函数中能调用构造函数。
o 构造函数分成两个阶段:
    1. 分配内存:这是从无到有阶段,该阶段结束,产生一个instance,也即this。
    2. 初始化内存:真正调用构造函数的部分。此时已经是对该instance调用构造函数,因此,可以调用任何非静态函数。
o 在静态函数中,只要是通过instance.Func()或者pointer->Func()的方式就可以调用非静态函数,因为显式指定了this。
因此提倡在所有非静态成员函数中显示使用this来使用成员。

相关文章
|
7月前
|
C语言
学习static定义静态变量
学习static定义静态变量。
65 4
|
7月前
|
存储 设计模式 算法
[C++] static静态成员变量/函数的用法
[C++] static静态成员变量/函数的用法
85 1
|
7月前
|
C++
c++中const修饰成员函数的问题
问题引入: 看下面这一段代码:
55 0
|
程序员
虚函数的修饰符:final override(仅能虚函数)
虚函数的修饰符:final override(仅能虚函数)
53 0
构造函数被private修饰后只能通过静态方法获得实例
构造函数被private修饰后只能通过静态方法获得实例
83 0
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
【C++】类内成员析构函数 常函数 static的介绍 浅拷贝
136 0
|
安全 编译器 C++
C++:类中const修饰的成员函数
C++:类中const修饰的成员函数
C++:类的static成员,友元和构造函数初始化列表
C++:类的static成员,友元和构造函数初始化列表