-
一元运算符: (-)运算符重载: class A { public: A查看全部
-
静态数据成员必须单独赋值,在类外,且前面不用加static。 静态成员函数不能调用非静态数据成员。 静态数据成员只有一份,且不依赖对象而存在。查看全部
-
友元类: class A; class B{ friend A; //A是B的友元类 private: int m; } class A{ public: void printl(){ cout<<b.m; } private: B b; //在友元类A中定义类B的对象,可以在友元类中调用类B中的私有对象 } 友元关系不可传递,友元关系具有单向性,友元在形式和数量上不做约束,友元类只是封装的补充查看全部
-
友元全局函数: class A{ friend void printXY(A查看全部
-
一元运算符重载 一.成员函数的负号运算符重载 1.声明部分:因为每次取反后返回的坐标(即对象)是它本身,所以此重载在类中要用引用去声明;//Coordinate& operator-(); 2.定义部分:就是对其坐标取负值赋给本身,返回this指针指向的值(默认指针参数this指向部分) Coordinate&Coordinate::operator-() { m_iX=-m_iX或this->m_iX=-(this->m_iX); m_iY=-m_iY或this->m_iX=-(this->m_iY); return *this; } 3.调用部分:实例化一个对象,对对象取反(其实是调用负号运算符重载),然后打印出来; 例:Coordinate coor(1,3); cout<<coor.getX()<<","<<coor.getY()<<endl;//打印出横纵坐标 -coor;//其实是调用运算符重载coor.operator-();//因为采用引用可以二次取反,负负得正 -(-coor); cout<<coor.getX()<<","<<coor.getY()<<endl;//打印出取反后的横纵坐标 4.无运算符重载时,不能对对象取反(因为计算机不能识别负号) 二.友元函数的负号运算符重载 1.声明部分:要用friend关键字,参数原本是默认参数this指向部分,此时也可实例化一个对象或引用//friend Coordinate& operator-(Coordinate &c); 2.定义部分:不用类的作用域标识符::(因为友元函数是独立于类外的),且此时this变成对象c; Coordinate&operator-(Coordinate& c) { c.m_iX=-c.m_iX; c.m_iY=-c.m_iY; return c; } 3.调用部分:同上查看全部
-
点点滴滴查看全部
-
方法烦烦烦查看全部
-
嘻嘻嘻查看全部
-
顶顶顶顶顶顶查看全部
-
地对地导弹查看全部
-
方法烦烦烦查看全部
-
帆帆帆帆帆帆帆帆查看全部
-
水水水水水查看全部
-
顶顶顶顶顶顶顶顶顶查看全部
-
static注意事项: 1.静态数据成员不依赖构造函数初始化,必须在类外单独初始化(因为它不是随着对象的产生而产生(即不是依赖构造函数初始化),而是随着类的产生而产生(即类产生后未实例化对象时它在内存中已经存在),而此时对象还未产生所以不依赖构造函数) //普通的数据成员和成员函数依赖于对象(即依赖构造函数初始化),创建对象后才存在 2.静态成员函数不能调用非静态成员函数和非静态数据成员 反之非静态成员函数能调用静态成员函数和静态数据成员及非静态的方法和属性(因为静态的成员函数不隐含this指针,无法知道去找哪个对象) 3.静态成员函数的声明和定义,声明的时候有static 关键字,定义时没有该关键字;静态数据成员前面也加关键字static 4.静态数据成员只有一份,且不依赖对象而存在(因为用sizeof求对象大小时不包含静态数据成员) 5.访问静态数据成员及静态成员函数时用类名Tank::getCount(),此时是初始化的值;用实例化对象t访问静态数据成员及成员函数时t.getCount(); 静态成员函数不能修饰为const,const的本质是对非静态成员函数隐含的this指针指向的值加以修饰。而静态成员函数不隐含this指针。查看全部
举报
0/150
提交
取消