-
运算符重载: 一元运算符实现,-,++ 注意前置++、后置++的区别,尤其是后置++ 具体实现如图所示:查看全部
-
常用标准模板类stl:vector向量,list链表,map映射 遍历常用类的迭代器iterator,用法类似指针,与对象的begin()和end()配对使用,前者指向对象的第一个元素,后者指向对象最后元素的下一个位置。 map的使用如下图:查看全部
-
函数模板:关键字template 可通过传入的参数生成不同的模板函数来。 1.类型作为模板参数 template<typename A,class B> void printInfo(A a, B b) { count<<a<<“,”<<b<<endl; } int main() { printInfo<int,string>(7,“hello”); return 0; } 注意1:typename,class都是类型关键字,等效。 注意2:上述情况调用模板函数时,<int,string>可省略,系统会自动根据传人的实参判断类型。 2.变量作为模板参数 template<int x> void printInfo() { count<<x<<endl; } int main() { printInfo<5>(); return 0; } 注意:实例化模板函数时,模板参数应该传人一个确定的指定类型的值。上述例子传人一个整型常量5。查看全部
-
静态数据成语与静态成员函数:
(1)静态数据成员在(cpp)直接初始化,不能在类的构造函数中初始化,因为静态成员不依赖对象而存在,且只有一个。
(2)静态成员函数声明时(在头文件)加static,定义时不加。
(3)静态的成员函数不能调用非静态成员,但非静态的成员函数可以调用静态成员。
(4)静态成员函数不能是常成员函数,因为const修饰的是隐藏的this对象指针,而static 静态成员函数是不依赖于对象而存在的。因此用const 修饰static函数必然会出现问题。
(5)静态成员调用方法:A::fun() A::value;
如果成员是共有成员也可:a.fun(); a.value
查看全部 -
友元机制
允许一个类授权其他函数直接访问类的private和protected成员,友元包括友元函数、友元类和友元成员函数。
友元函数包括友元全局函数和友元成员函数 ,其中
(1)友元全局函数,该函数是全局函数,可以访问传入参数对象类A的私有私有成员。类A中对友元函数进行声明的格式:friend void fun(A a/&a/*p)
(2)友元成员函数,该函数是某类B的成员函数,可以访问传入参数对象类A的私有成员。类A中对友元函数进行声明的格式:friend void B::fun(A 对象/引用/指针)
注意1:传入参数最好用引用或者指针,不建议直接用成员传入,以免生成临时对象降低效率。
注意2:类A中对友元函数进行声明的位置没有约束,可以在关键字public,protected,private下,但最好放在关键字外面的最顶部。
注意3:类A声明文件要#include"B.h",类B声明文件要Class A;对类A进行声明,不能互相包含。
查看全部 -
VECTOR常用函数
查看全部 -
operator,运算符重载关键字,可以用友元函数和成员函数重载
查看全部 -
静态成员函数中调用非静态成员是会失败的,因为不实例化,非静态成员就不存在,此时静态成员函数没有可以调用的成员
查看全部 -
静态成员函数和数据成员的访问方法,类::静态成员或函数
查看全部 -
静态数据成员并不依赖于对象的实例化,所以不论你是否实例化一个对象,这个静态成员都存在,在类外赋值静态成员
查看全部 -
在数据成员前面加static就称这个成员为静态数据成员
查看全部 -
友元类,在类中用friend定义一个友元类,那么这个友元类中的任何一个函数都可以直接调用这个类的私有成员
查看全部 -
成员友元函数使用方法如图
查看全部 -
友元成员函数,某一个类中的成员函数,可以直接用这个成员函数调用形参这个类的私有成员
查看全部 -
访问方式如下,形参为一个对象名,一般用引用或者指针,传递效率高,我们可以直接在函数中访问对像的私有成员
查看全部
举报