成员变量与成员函数

来源:互联网 发布:灯光 控台 软件 编辑:程序博客网 时间:2024/04/25 14:39

本地变量:在函数内部声明以及定义的变量。

成员变量:类的变量,在声明类时声明成员变量(头文件),在定义类的对象时定义成员变量。

成员函数:类的函数,在声明类时声明成员变量(头文件),源文件中定义类的函数

1. 类的头文件中:

class A//声明类A

{

private:

int i;//声明成员变量

public:

void f();//声明成员函数

}

2. 类的源文件中:

void A::f()//定义类A中的成员函数

{

printf("%d\n", i );

}

3. 源文件中:

A a;//定义类的对象a(同时定义了该对象中的成员变量a.i)

a.f();//对象a调用类A中的成员函数f()

 

注意:成员变量属于类的对象(a),成员函数属于类(A)。

 

如何理解成员函数的调用过程?

a.f(); 可以等效成f(&a);

简单看来(不考虑私有变量、作用域等区别),成员变量与成员函数可以改成结构体与全局函数:

1. 结构体声明

struct A{

int i;

}

2. 全局函数的声明与定义

void f(A* p)//成员函数的定义

{

printf("%d\n", p->i );

}

3. 结构体的定义(包括结构体中变量的定义)

A a;

 

那么,成员函数(A::f())怎么知道对象的成员变量(a.i)的地址?

this:the hidden parameter for all member functions

在a.f()中,对于A::f()来说,this就是指向对象a的指针

即成员函数的完整表示为:

void f(A* this);//成员函数的声明

void A::f(A* this)//成员函数的定义

{

printf("%d\n", this->i );//类似C语言的写法

}

只不过,在C++中,this被隐藏。

0 0
原创粉丝点击