1:抽象类通常作为其他类的父类,如果从抽象类派生的子类是抽象类,则子类必须实现父类中的所有纯虚函数.代码如下: // 8.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; class CEmployee //定义CEmployee类 { public: int m_ID; //定义数据成员 ]; //定义数据成员 ]; //定义数据成员 ; //定义…
1:包含有纯虚函数的类称为抽象类,一个抽象类至少具有一个纯虚函数.抽象类只能作为基类派生出的新的子类,而不能在程序中被实例化(即不能说明抽象类的对象),但是可以使用指向抽象类的指针.在程序开发过程中并不是所有代码都是由软件构造师自己写的,有时候需要调用库函数,有时候分给别人写.一名软件构造师可以通过纯虚函数建立接口,然后让程序员填写代码实现接口,而自己主要负责建立抽象类. 2:纯虚函数 纯虚函数是指被标明为不具体实现的虚成员函数,它不具备函数的功能.许多情况下,在基类中不能给虚函数一个有意义的定…
1:运行代码: // 5.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; int plus(int b) { ; } int main() { void* pV = NULL; ; pV = plus; cout<<"执行pV指向的函数:"<<endl; result=((); c…
1:建立一个类CPerson. (1)在person.h文件中代码: class CPerson { public: //数据成员 int m_iIndex; ]; short m_shAge; double m_dSalary; //成员函数 short getAge(); int setAge(short sAge); int getIndex() ; int setIndex(int iIndex); char* getName() ; ]); double getSalary() ; i…
1:代码如下: // 4.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void ShowMessage(); //函数声明语句 void ShowAge(); //函数声明语句 void ShowIndex(); //函数声明语句 void main() { ShowMessage(); //函数调用语句 ShowAge(); //函数调用语句…
1:代码如下: // 2.5.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" int main() { long iLong; /*长整型变量*/ short iShort; /*短整型变量*/ ; /*整型变量,为其赋值为1*/ ; /*整型变量,为其赋值为2*/ ]; /*定义字符数组变量*/ printf("Enter the long integer\n"); /*输出信息提示*/ scanf("%ld&qu…
1:函数模板不是一个实在的函数,因此编译器不能为其生成可执行的代码.定义函数模板只是一个对函数功能框架的描述,在具体执行时,将根据传递的实际参数决定其功能. 2:函数模板定义的一般形式如下: template <类型形式参数> 返回类型 函数名(形式参数表) { ...//函数实现 } 其中template为关键字,表示定义一个模板,尖括号“<>”中为模板参数,模板参数主要有两种,一种是模板类型参数,另一种是模板非类型参数.上述代码中定义的模板使用的是模板类型参数,模板类型参数使用…
1:曾经介绍过string类型的数据,它是C++标准模版库提供的一个类.string类支持使用加号“+”连接两个string对象.但是使用两个string对象相减确实非法的,其中的原理就是C++所提供类中重载运算符的功能.在string类中定义了运算符“+”和“+=”两个符号的使用方法,这种使用方法的实质是一种成员函数. 关键字operator是专门实现类运算符重载的关键字.在类成员中,定义一个这样形式的函数: 返回值类型 operator 重载运算符(参数列表) 以box类为例,我们可以将加号…
1:对于类的非静态成员,每个对象都有自己的一份拷贝,即每个对象都有自己的数据成员,不过成员函数却是每个对象共享的.那么调用共享的成员函数如何找到自己的数据成员呢?答案是通过类中隐藏的this指针. 2:示例代码: // 7.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; class CBook //定义一个CBook类 { public: int m…
上面看到PHP对象中的成员有两种一种是成员属性, 一种是成员方法.对象我们以经可以声明了,$p1=new Person(); 怎么去使用对象的成员呢?要想访问对象中的成员就要使用一个特殊的操作符”->”来完成对象成员的访问: 对象->属性 $p1->name; $p2->age; $p3->sex; 对象->方法 $p1->say(); $p2->run(); 如下面实例: <?php class Person { // 下面是人的成员属性 var $…
1:代码如下: // 3.18.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; int i; ;i<=;i++) //for循环语句 sum+=i; cout << "数字1-10的和:" << sum << endl; } 运行结果:…
1:代码如下: // 3.15.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ,i=; do { sum=sum+i; i++; }); cout << "数字1-10之和 :" << sum << endl; } 运行结果:…
1:代码如下: // 3.14.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ,i=; ) { sum=sum+i; i++; } cout << "数字1-10之和 :" << sum << endl; } 运行结果:…
1:以a[4][3]为例 a代表二维数组的地址,通过指针运算符可以获取数组中的元素 (1)a+n代表第n行的首地址 (2)&a[0][0]既可以看作第0行0列的首地址,同样也可以被看作是二维数组的首地址.&a[m][n]就是第m行n列元素的地址 (3)&a[0]是第0行的首地址,当然&a[n]就是第n行的首地址 (4)a[0]+(n-1)表示第0行第n个元素 (5)*(*(a+n)+m)表示第n行第m列 (6)*(a[n]+m)表示第n行第m列元素 2:代码如下: // 6…
1:代码如下: // 6.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ][]={{,,,}, {,,,}, {,,,}}; ]={}; int row,col,i; cout << "array old" <<endl; ;row<;row++) { ;col<…
1:通过指针引用数组,需要先声明一个数组,再声明一个指针. int a[10]; int *p; 然后通过&运算符获取数组中元素的地址,再将地址值赋给指针变量. p=&a[0]; 代码实例如下: // 6.9.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ]; int *p; //利用循环,分别为10个元素赋…
1:一维数组的初始化有两种,一种是单个逐一赋值,一种是使用聚合方式赋值.聚合方式的例子如下: int a[3]={1,2,3}; int a[]={1,2,3};//编译器能够获得数组元素的个数 int a[5]={1,2,3};//前3个元素被赋值,后2个元素的值为0 2:二维数组的初始化也分为单个元素逐一赋值和使用聚合方式赋值两种.聚合方式的例子如下: int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={{1,2,3,4},{5,6,…
1:代码如下: // 6.1.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ]; //利用循环,分别为10个元素赋值 ;i<;i++) a[i]=i; //将数组中的10个元素输出到显示设备 ;i<;i++) cout << a[i] << endl; } 运行结果:…
1:使用字面值(如1.3.15f.true),或者表达式等临时变量作为函数实参传递时,按左值引用传递参数会被编译器阻止.而进行值传递时,将产生一个和参数同等大小的副本.C++11提供了右值引用传递参数,不申请局部变量,也不会产生参数副本. // 5.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; static float global = 1.11…
1:如不加特殊说明,一般认为引用指的都是左值引用.引用实际上是一种隐式指针,它为对象建立一个别名,通过操作符&来实现,引用的形式如下: 数据类型 & 表达式: 例如: int a=10; int & ia=a; ia=2; 上面的程序定义了一个引用变量ia,它是变量名a的别名,对ia的操作与对a的操作完全一样.“ia=2”把2赋给a,“&ia”返回a的地址.执行“ia=2”和执行“a=2”等价. 使用引用的说明如下: (1)一个C++引用被初始化后,无法使用它再去引用另一个…
1:代码如下: // 5.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using std::cout; using std::endl; int* pointerGet(int* p)//定义一个返回指针类型的函数 { ; cout<<"函数体中i的地址"<<&i<<endl; cout<<"函数体中…
1:静态变量static可以分为静态局部变量和静态全局变量,静态局部变量的值在函数调用结束后不消失,静态全局变量只能在本源文件中使用. 静态变量属于静态存储方式,它具有以下特点: (1)静态变量在函数内定义,在程序退出时释放,在整个程序的运行期间都不释放,也就是说它的生存周期为整个源程序. (2)静态变量的作用域与自动变量相同,在函数内定义就在函数内使用,尽管改变量还继续存在,但是不能使用它,如果再次调用定义它的函数时,便可继续使用它. (3)编译器会为静态局部变量赋予0值. 代码如下: //…
1:代码如下: // 4.6.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int Add(int x ,int y) //定义第一个重载函数 { cout << "int add" << endl; //输出信息 return x + y; //设置函数返回值 } double Add(double x,d…
1:代码如下: // 3.25.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; int main(int argc, _TCHAR* argv[]) { //若直接使用for循环遍历1773-2012年,则需要执行240次判断. int year; //1773开始的第一个闰年 ;//代表从何年开始 ;//代表从何年结束 //其实可以将以下for循环条件…
1:代码如下: // 3.21.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; //定义一个整型变量,初始化为0 ; //定义一个整型变量,初始化为0 label: //定义一个标签 ivar++; //ivar自加1 num += ivar; //累加求和 ) //判断ivar是否小于10 { goto label; /…
1:continue不是立即跳出循环体,而是跳过本次循环结束前的语句,回到循环的条件测试部分.代码如下: // 3.20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int i,n,sum; sum=; cout<< "请输入10个整数" << endl; ;i<=;i++…
1:代码如下: // 3.19.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { int i,n,sum; sum=; cout<< "请输入10个整数" << endl; ;i<=;i++) { cout<< i<< ":" ; ci…
1:代码如下: // 3.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { cout<<"输入一个A-D范围内的大写字母作为成绩评价"<<endl; char iInput; cin >> iInput; switch…
1:代码如下: // 2.10.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using namespace std; void main() { ; double y=-3.1415; cout << "x="; cout.width();//输出字符串的宽度为10 cout << x; cout << "y=";…
1:代码如下: #include "stdafx.h" #include <iostream> #include <iomanip> using namespace std; void main() { ;//0x代表16进制, cout << i << endl;//以10进制输出 cout << hex << i << endl;//以16进制输出 cout << hex <<…