成员变量与成员函数

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

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

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

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被隐藏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值