您的位置:首页 > 编程语言 > C语言/C++

Lession 15 C++中一些特殊的技术

2014-08-18 22:05 239 查看

一、指向成员的指针

1. 指向数据成员的指针

int A::*pint = NULL;

int A::*p = &A::m_val; // 则可以用p来访问成员m_val的值,当然是与对象挂勾的;

2. 指向成员函数的指针

void A::fun(int); //成员函数

void (A::*pf)(int);

获得成员函数地址:&A::fun;

A::pf = &A::fun; // pf是指向函数指针的指向 注意不是:pf = A::fun;

A a; a.*pf; // a.fun();

二、嵌套类

1). 在一个类中嵌套的定义另一个类;

class Tree // 内围类

{

public:

class Node // 外围类

{

static int va;

};

};

嵌套类的成员函数可以在嵌套类里或外定义,但不能在外围类里定义;实现时要把外围类的作用域加入;

int Tree::Node::va;

嵌套类可以只在外围类中声明,实现放在外围类:

class A

{

public:

class B; // 声明嵌套类

int m_val;

};

class A::B // 嵌套类的实现

{

public:

int m_val; // 成员变量与A类中的成员变量可以相同;是两个不同的作用域

};

main()

{

A::B ab;

}

1. A类不能访问内部类B的非公有成员变量

2)类成员函数的名字解析

名字解析是从小{}开始寻找,依次在外围{}中找;如果要直接调用全局可以用::运算符;

3)局部类

void fun()

{

int v = 0;

class InC

{

public::

void Infun()

{

int a =v; // 错

}

}

}

类成员函数中定义的类;局部 类中不能定义static成员;外部不能访问局部类中的成员;

局部类中不能直接使用外围函数的变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: