TinyXml友员类的复习

0x00. 遇到问题
TiXmlNode 不提供节点属性查询,跟进代码查看有friend class TiXmlElement;
友员类,忘记怎么玩了╮(╯▽╰)╭。

0x01. 将代码抓取出来

class TiXmlNode : public TiXmlBase
{
friend class TiXmlDocument;
friend class TiXmlElement;
}

class TiXmlElement
{

}

A.一个段子轻松记住友元类之间的关系!(′▽′)ψ
  甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。
  推导出来:TiXmlElement可以访问TiXmlNode,但TiXmlNode不可以访问TiXmlNode

0x02. 实验
(′▽′)ψ 最后在tinyxml 源码中找到证据,完美解决上面推导、

 1 const TiXmlElement* TiXmlNode::FirstChildElement( const char * _value ) const
 2 {
 3 const TiXmlNode* node;
 4
 5 for (  node = FirstChild( _value );
 6     node;
 7     node = node->NextSibling( _value ) )
 8 {
 9   if ( node->ToElement() )
10   return node->ToElement();
11 }
12   return 0;
13 }
14
15  
时间: 2024-10-10 17:48:21

TinyXml友员类的复习的相关文章

友员函数和友员类

#include<iostream> using namespace std; class Test2//注意友员类的定义放在Test1的之上!! { friend class Test1;//Test1想直接访问Test2的private参数,所以声明为我是你的朋友! public: Test2(int a, int b){ x = a; y = b; } int getx(){ return x; } int gety(){ return y; } private: int x, y; }

模板类的友员函数

#include<iostream> using namespace std; template<class T> class Complex{ public: Complex(T a, T b); void setComplex(T a,T b); friend Complex<T> operator+(const Complex<T> &c1, const Complex<T> &c2){ //对于模板类的友员函数一定要写在类

&lt;&lt;黑马程序员&gt;&gt;类的加载和初始化

类的加载和初始化 + (void)load  方法   ①  当程序一启动就会把所有类和分类而且加载后就会调用每个类的+load方法只会调用一次.   ②  先加载父类在加载子类,每个类加载完就会调用load方法 2 . + (void)initialize    方法      ①  当第一次使用这个类时就会调用  + (void)initialize    方法 调用顺序:①  先加载父类在加载子类               ② 先调用父类的load方法在调用子类的load方法      

黑马程序员----类的加载和初始化

类的加载和初始化 当程序一启动,就会加载项目中所有的类和分类,而且加载后会调用每一个类和分类中的+load方法(即使不创建对象也会调用),且只会调用一次: 当第一次使用某个类时,就会调用当前类的+initialize方法: 先加载父类,再加载子类(先调用父类的+load方法,再调用子类的+load方法): 先初始化父类,再初始子类(先调用父类的+initialize方法,再调用子类的+initialize方法): 注意点:1.调用创建子类时即会调用父类的+initialize方法,也会调用子类的

黑马程序员----类的本质

类的本质: 类本身也是一个对象,是一个Class类型的对象,简称类对象: 1.内存中创建对象的本质: 利用Class  创建一个 Person类对象: 利用person类对象,创建Person类型的对象. 2.类对象及对象内存细节: 3.类对象的其他使用: 调用类方法: 1.利用类名调用类方法: 2.利用类对象调用类方法: 创建对象:

黑马程序员-----类的继承和派生概念

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ----- 第一讲 类的继承和派生概念 本小节知识点: 1.[理解]什么是继承? 2.[掌握]类的继承和派生概念 1.什么是继承? 2.OC中的继承与派生 1 #import <Foundation/Foundation.h> 2 3 @in

黑马程序员————类的第五个成员内部类

------<a href="http://www.itheima.com" target="blank">Java培训.Android培训.iOS培训..Net培训</a>.期待与您交流! ------- 我们在通过java语言描绘事物的时候,会遇到事物里面还有事物,而里面的事物还会用到外面事物的一些属性.就好像看似单一的物体实则里面还有很多看似独立的分支,但却又要用到这个物体的一些属性与方法.就好像大自然里面的万物,每个看似独立却又息息相

UML:类图复习-鸡生蛋,蛋生鸡

这是前一阵<高级软件工程>课堂上,老师随堂出的一道讨论题,随手贴在这里: ps: 今天是520,正好聊一些OoXx,关于爱的扯淡话题:) 题目:"鸡生蛋,蛋孵鸡",世间万物生生不息,如何用O-O中的类图以尽可能接近现实的方式来描述? 参考答案: 解析: 1.Chicken是基类,Hen(母鸡),Cock(公鸡)从Chicken派生, 2.Hen与Egg是关联关系,注意关联关系中的"重数"表示,从Hen向Egg的方向看去,0..*表示1只母鸡,可能下&qu

C++类的复习

1.C++ 类的声明:class class_name{    private:        /*        *私有的数据和成员函数        *只能被本类中的成员函数引用,类外不能调用        *友元类例外        */    public:        /*        *公共的数据和成员函数        *可以被本类中的成员函数引用,也可以被类的作用域内的其他函数引用        */    protected:        /*        *受保护的数