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

来源:互联网 发布:车品逸导航软件下载 编辑:程序博客网 时间:2024/05/18 02:51

一、指向成员的指针

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成员;外部不能访问局部类中的成员;

局部类中不能直接使用外围函数的变量







 

















0 0