友元 友元分为友元函数和友元类两种. 一.友元函数 在定义一个类的时候,可以把一些函数(包括全局函数和其它类的成员函数)声明为“友元”,这样那些函数就成为该类的友元函数,在友元函数内部就可以访问该类对象的私有成员了. 将全局函数声明为友元的写法如下: friend返回值类型 函数名(参数表): 将其他类的成员函数声明为友元的写法入下: friend返回值类型 其他类的类名::成员函数名(参数表): 但是,不能把其他类的私有成员函数声明为友元. #include<iostream> using…
实例:长度可变的整型数组类 int main() { //要编写可变长整型数组类,使之能如下使用: CArray a; //开始里的数组是空的 ; i < ; ++i) a.push_back(i);//->要用动态分配的内存来存放数组元素,需要一个指针成员变量 CArray a2, a3; a2 = a;//->要重载“=” ; i < a.length(); ++i) cout << a2[i] << " ";//->要重载“[…
重载流插入运算符和流提取运算符 流插入运算符:“<<” 流提取运算符:“>>” cout 是在 iostream 中定义的,ostream 类的对象. “<<” 能用在cout 上是因为,在iostream里对 “<<” 进行了重载. 怎么重载才能使得cout << 5; 和 cout << “this”都能成立? ostream & ostream::operator<<(int n) { …… //输出n的代码…
运算符重载为友元函数 一般情况下,将运算符重载为类的成员函数,是较好的选择. 但有时,重载为成员函数不能满足使用要求,重载为普通函数,又不能访问类的私有成员,所以需要将运算符重载为友元. class Complex { double real,imag; public: Complex( double r, double i):real(r),imag(i){ }; Complex operator+( double r ); }; Complex Complex::operator+( dou…
运算符重载的概念和原理 一.运算符重载的需求 C++预定义的“+.-. * ./.%. ^ .&.~.!.|. = .<< >>.!= ”等运算符,只能用于基本数据类型(整型.实型.字符型.逻辑型)的常量或变量进行运算,不能用于对象之间的运算. 在数学上,两个复数可以直接进行+.-等运算.但在C++中,直接将+或-用于复数对象是不允许的.有时会希望,让对象也能通过运算符进行运算.这样代码更简洁,容易理解. 二.运算符重载 运算符重载,就是对已有的运算符(C++中预定义的运算…
常量对象和常量成员函数 一.常量对象 如果希望某个对象的值初始化后就再也不被改变,则定义该对象时可以在前面加const关键字,使之成为常量对象. class CDemo { private: int value; public: void SetValue(){} }; const Demo Obj;//常量对象 Obj.SetValue();//wrong 常量对象一旦初始化后,其值就再也不能改变,但是可以通过常量对象调用常量成员函数. 二.常量成员函数 常量成员函数,就是在定义时加了cons…
1.内联函数(inline关键字) eg.inline int Max(int a,int b) { if(a>b) return a; return b; } 当编译器处理调用内联函数的语句时,直接将整个函数体的代码插入调用语句处,但是会使最终可执行程序的体积增加.(这是以空间换时间) 2.函数的重载(使函数命名变得简单) (1)定义:一个或多个函数,名字相同,然而参数个数或类型不同 (2)编译器判断形式:根据函数调用语句中实参的个数和类型来判断 eg. int MAX(int a,int b…
一.C++程序到C程序的翻译 程序示例分析: C++: class CCar { public: int price; void SetPrice (int p); }; void CCar::SetPrice (int p) { price = p; } int main() { CCar car; car.SetPrice(); ; } C: struct CCar { int price; }; void SetPrice(struct CCar * this,int p) { this-…
章, DOM扩展 选择符 API Selector API Level1核心方法querySelector .querySelectorAll,兼容的浏览器可以使用 Document,Element 实例调用它们,支持浏览器:IE8+,Firefox3.5+,Safari3.1+,chrome,Opera10+ querySelector方法 接收一个 CSS选择符,返回与该模式匹配的第一个元素 通过 Document类型调用该函数,会在文档范围查找匹配元素,通过 Element类型调用该函数,…
假设要编写一个小区养狗管理程序,该程序需要一个“主人”类,还需要一个“狗”类.狗是有主人的,主人也有狗.假定狗只有一个主人,但一个主人可以有最多10条狗.该如何处理“主人”类和“狗”类的关系呢?下面是一种直观的写法: #include<iostream> using namespace std; class CDog; class CMaster { CDog dogs[10]; int dog_num; }; class CDog { CMaster m; }; int main() { }…