C++教程
文章平均质量分 66
lyf08600231
这个作者很懒,什么都没留下…
展开
-
数组实现冒泡法和选择法排序(C++)
#include #include using namespace std; void bubble_sort(int arry[],int num);void getArry(int arry[],int num);void outArry(int arry[],int num);void select_sort(int[],in原创 2012-12-06 17:06:08 · 2646 阅读 · 0 评论 -
运算符重载3
用友元运算符重载实现复数与实数的加法运算。实数与复数的实部相加,复数的虚部保持不变#include class Complex {private:double r, i;public:Complex (double R=0,double I=0):r(R),i(I){};friend Complex operator+(Complex a,double b){return Com原创 2013-01-09 16:37:30 · 255 阅读 · 0 评论 -
运算符重载2
利用友元运算符重载实现复数的加、减、乘、除等复数运算。#include class Complex {private: double r, i;public: Complex (double R=0, double I=0) : r(R), i(I){ }; friend Complex operator+(Compl原创 2013-01-09 16:35:21 · 258 阅读 · 0 评论 -
重载++运算符的例子
#include class coord{ int x,y;public: coord(int i=0,int j=0); void print(); coord operator ++();};coord::coord(int i,int j){ x=i;y=j; }void coord::print(){ cout<<" x= "<<x<<" ,y="<<y<<endl原创 2013-01-09 16:44:20 · 339 阅读 · 0 评论 -
指针与常量
实例一:#includemain(){int i, j=9;const int ic = 100;const int * ip = & ic;//ip可以改变,*ip不可以int * const icp = & i; //icp不可以改变,*icp可以//icp = &j; //err,报错为l-value specifies co原创 2012-12-28 11:31:06 · 537 阅读 · 0 评论 -
虚基类的执行次序分析
–虚基类的初始化与一般的多重继承的初始化在语法上是一样的,但构造函数的调用顺序不同;–若基类由虚基类派生而来,则派生类必须提供对间接基类的构造(即在构造函数初始列表中构造虚基类,无论此虚基类是直接还是间接基类)–调用顺序的规定:•先调用虚基类的构造函数,再调用非虚基类的构造函数•若同一层次中包含多个虚基类,这些虚基类的构造函数按它们的说明的次序调用•若虚基类由非基类派生而来,则原创 2013-01-08 09:55:06 · 786 阅读 · 0 评论 -
静态数据成员的理解
#include using namespace std;class Account{public: Account(char *Name,char *Psw); Account(){ number++; } ~Account(){ number--; } int getNumber(){return number;}private:原创 2013-01-04 19:48:33 · 270 阅读 · 0 评论 -
向函数传递对象
•对象可以作为参数传递给函数,其方法与传递其他类型的数据相同:–值传递(对象的一个拷贝)–地址传递 –引用传递建议当函数的形式参数是类的对象时,如果在函数内部不需要改变形式参数的状态,需要把形式参数声明为常引用的形式,例如Child fcn(const Child&),目的是为了避免拷贝构造函数的调用,以及错误的修改实参的状态。不要通过函数返回局部对原创 2013-01-06 11:19:13 · 516 阅读 · 0 评论 -
VC6.0 error LNK2001: unresolved external symbol _main解决办法
VC6.0 error LNK2001: unresolved external symbol _main解决办法2010-03-30 18:59:15学习VC++时经常会遇到链接错误LNK2001,该错误非常讨厌,因为对于编程者来说,最好改的错误莫过于编译错误,而一般说来发生连接错误时,编译都已通过。产生连接错误的原因非常多,尤其LNK2001错误,常常使人不明其所以转载 2013-01-06 16:39:51 · 471 阅读 · 0 评论 -
局部变量与函数返回地址
弄清楚了局部变量的存储方式与生命期之后,当用指针或引用从函数中返回一个地址时不要返回局部变量的指针或引用实例一:#includeusing namespace std;int temp;int &f1(int x){temp=x;return temp;}void main(){int &i=f1(3);coutcout}原创 2012-12-29 20:06:51 · 319 阅读 · 0 评论 -
对象数组和对象指针
•说明–要定义对象数组的类必须有不需要参数的构造函数,包括以下几种情况:•没有定义任何构造函数的类可以定义对象数组,因为C++会为这种类产生一个默认构造函数。•如果一个类同时具有无参构造函数和全部参数都有缺省值的构造函数,也可以定义对象数组。无参构造函数在定义对象数组时拥有优先权。但在定义无参对象时,将产生二义性,上面的定义“point p2;”就属于这种情况。•如果一个类只有需要原创 2013-01-06 11:14:07 · 713 阅读 · 0 评论 -
运算符重载1
有复数类Complex,利用运算符重载实现复数的加、减、乘、除等复数运算。#includeusing namespace std;class complex{ double r,i;public : complex(double R ,double I):r(R),i(I){}; complex operator+(complex b); complex operat原创 2013-01-09 16:32:17 · 267 阅读 · 0 评论 -
运算符重载
设计一个字符串类String,通过运算符重载实现字符串的输入、输出以及+=、==、!=、、>=、[ ]等运算#include #include class String {private:int length; //字符串长度char *sPtr; //存放字符串的指针void setString(原创 2013-01-09 16:54:56 · 596 阅读 · 0 评论 -
运算符重载
有一销售人员类Sales,其数据成员有姓名name,身份证号id,年龄age。重载输入/输出运算符实现对Sales类数据成员的输入和输出#include#includeclass Sales{private: char name[10]; char id[18]; int age;public: Sales(char *Name,char *ID,int Age);原创 2013-01-09 16:53:48 · 366 阅读 · 0 评论 -
运算符重载
设计一个工资管理类,它能根据职工的姓名录入和查询职工的工资,每个职工的基本数据有职工姓名和工资#include #include using namespace std;struct Person{ //职工基本信息的结构 double salary; char *name;};class SalaryManaege{ Person *e原创 2013-01-09 16:50:10 · 330 阅读 · 0 评论 -
运算符重载
设计一个计数器counter,用类成员重载自增运算符实现计数器的自增,用友元重载实现计数器的自减#includeusing namespace std;class Counter{private:int n;public:Counter(int i=0){n=i;}Counter operator++();Counter operator++(int);friend Coun原创 2013-01-09 16:46:26 · 807 阅读 · 0 评论 -
运算符重载的应用一:秒钟自加
通过运用友元函数的形式重载运算符++#include using namespace std;class Time{ int hour ; int min; int sec;public: void display(); friend Time operator++(Time &t); Time(int h,int m,int s):hour(h),min(m),原创 2013-01-09 16:41:11 · 493 阅读 · 0 评论 -
默认赋值运算符引起的指针悬挂问题
#include #include using namespace std;class String{ char *ptr; int n;public: String(char * s,int a){ ptr=new char[strlen(s)+1]; strcpy(ptr,s); n=a; } ~String(){delete ptr;} voi原创 2013-01-09 16:47:42 · 537 阅读 · 0 评论 -
变量交换
方式一:C语言用指针交换两个变量值#include void swap(int *a,int *b) { int temp=*a; *a=*b; *b=temp;}void main(){ int x=5; int y=10; swap(&x,&y); cout}原创 2012-12-28 19:54:10 · 364 阅读 · 0 评论 -
返回引用
实例一:#include int temp;int& f(int i1,int i2){temp=i1+i2;return temp;}void main(){int t=f(1,3); //L1cout//L2f(2,8)++; //L3cout//L4f(2,3)=9;原创 2012-12-28 21:17:58 · 229 阅读 · 0 评论 -
预处理器实例
实例一:#include using namespace std;#define DK#ifdef DKvoid f1(){ cout#elsevoid f1(){ cout#endifvoid main(){f1();}运行结果:Dk is defined!实例二:#include using nam原创 2012-12-29 17:04:35 · 215 阅读 · 0 评论 -
全局变量与局部变量的初始化实例
#include int n; //初始化为0void f(){static int i; //初始化为0int j; //不被初始化,j值未知coutcout}int *p1; //p1被初始为0void main(){int *p原创 2012-12-29 17:15:21 · 513 阅读 · 0 评论 -
变量初始化
#includeusing namespace std;int x;char y;double d;string s;static int mx;int f2(int x3){static int y1=0;static int y2;static char c;coutx=1;//打了括号后里面的x和外面的是不同的,括号结束原创 2012-12-29 20:26:12 · 275 阅读 · 0 评论 -
文件实例
1、编程题目及要求:在C盘根目录下建立一文件student.dat,并从键盘输入3个学生的数据到该文件中。每个学生的数据包括姓名、身份证号,以及数学、英语、计算机等课程的成绩。实例一 建立文件#include iostream>#include fstream>using namespacestd;void main(){ ofst原创 2012-12-29 20:43:37 · 394 阅读 · 0 评论 -
名字空间实例
#includenamespace A{int n;void f(){ coutvoid g(){ cout};namespace B{int n;void f(){ cout}void t(){ cout}};void main(){using namespace A;using namespace B;A::n=0;A::f(原创 2012-12-29 16:59:51 · 260 阅读 · 0 评论 -
变量初始化2
#include using namespace std;class point{private: int x,y;public: void setpoint(int a,int b) { x=a; y=b;} int getx() { return x; } int gety() { return y; }};point p1原创 2013-01-04 16:55:19 · 283 阅读 · 0 评论 -
定义Point类的无参数构造函数,将point对象的数据成员初始化为0。
#include using namespace std;class point{private: int x,y;public: point(int a,int b){ x=a; y=b;} int getx(){ return x; } int gety(){ return y; } point(){ x=0;y=0; }原创 2013-01-04 16:58:14 · 3500 阅读 · 0 评论 -
析构理解
#include using namespace std;class MyClass{int val;public:MyClass(int i){ val=i;cout}int getval(){return val;}~MyClass() { coutMyClass MkBigger(){MyClass o(val*2);return o;原创 2013-01-06 14:29:55 · 297 阅读 · 0 评论 -
类成员的构造次序
#include using namespace std;class A{ int a;public: A(int i){ a=i; cout};class B{ int b;public: B(int i){ b=i; cout};class C{ A a1,原创 2013-01-06 11:06:16 · 264 阅读 · 0 评论 -
类的作用域和对象的生存期
#include using namespace std;class X{ public: X(int ii = 1){ i=ii; cout ~X(){ cout private:int i ;};class Z{ public: Z():x3(3),x2(2){ cout ~Z(){ cout原创 2013-01-06 14:42:06 · 1068 阅读 · 0 评论 -
基类与派生类对象的关系
•基类对象与派生类对象之间存在赋值相容性。包括以下几种情况:–把派生类对象赋值给基类对象。–把派生类对象的地址赋值给基类指针。–用派生类对象初始化基类对象的引用。•反之则不行,即不能把基类对象赋值给派生类对象;不能把基类对象的地址赋值给派生类对象的指针;也不能把基类对象作为派生对象的引用。 #include using namespace std;cla原创 2013-01-08 09:52:17 · 5710 阅读 · 0 评论 -
构造函数和析构函数的构造规则
(1)当有多个基类时,将按照它们在继承方式中的声明次序调用,与它们在构造函数初始化列表中的次序无关。当基类A本身又是另一个类B的派生类时,则先调用基类B的构造函数,再调用基类A的构造函数。(2)当有多个对象成员时,将按它们在派生类中的声明次序调用,与它们在构造函数初始化列表中的次序无关。(3)当构造函数初始化列表中的基类和对象成员的构造函数调用完成之后,才执行派生类构造函数体中的程原创 2013-01-08 09:58:59 · 647 阅读 · 0 评论 -
派生类对象的构造
•派生类对象的构造–先构造基类–再构造成员–最后构造自身(调用构造函数)•基类构造顺序由派生层次决定:最远的基类最先构造•成员构造顺序和定义顺序符合•析构函数的析构顺序与构造相反#include using namespace std;class A { public: A() { cout~A(){ cout};class B {pub原创 2013-01-08 10:02:32 · 588 阅读 · 0 评论 -
运算符重载
设计一个时间类Time,重载函数调用运算符( ),使它能够调整时(hh)、分(mm)、秒(ss)的数据。#include using namespace std;class Time{private: int hh,mm,ss;public: Time(int h=0,int m=0,int s=0):hh(h),mm(m),ss(s){} void operator()(原创 2013-01-09 16:51:32 · 239 阅读 · 0 评论