C++类的三种调用方式区别

遇到的问题

下面为三种方法调用,得到的结果相同,讨论用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
class A
{
public:
void output()
{
cout<<"output test"<<endl;
}
};
int main()
{
A a;//第一种
a.output();
A *b = NULL;//第二种
b->output();
A *c = new A;//第三种
c->output();
delete c;
return 0;
}

结论

  • 第一种 直接在栈上分配空间,函数执行完生命周期结束,

  • 第二种 现在的理解只有调用类中的静态成员函数才使用

  • 第三种 在在堆上分配空间,栈上空间自动回收,堆空间需要程序员手动回收

当需要大空间时用new,暂时使用对象,并内存使用不大时直接定义对象

静态成员

C++类静态成员与类静态成员函数

  • 静态成员的值对所有的对象是一样的。静态成员可以被初始化,但只能在类体外进行初始化。

  • 静态成员是类所有的对象的共享的成员,而不是某个对象的成员。它在对象中不占用存储空间,这个属性为整个类所共有,不属于任何一个具体对象。

  • 静态成员函数可以直接访问该类的静态数据和函数成员,而访问非静态数据成员必须通过参数传递的方式得到一个对象名,然后通过对象名来访问。

  • 静态成员函数在类外实现时候无须加static关键字

  • 静态成员函数没有this指针,它不能返回非静态成员,因为除了对象会调用它外,类本身也可以调用。

参考:C++类静态成员与类静态成员函数

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器