C++学习笔记二

来源:百度文库 编辑:神马文学网 时间:2024/04/28 16:56:08

C++学习笔记 二

已有 86 次阅读  2009-04-21 17:13 上面写的太多了 我用新的来写 要不然自己都搞不清楚了,上面的 还不懂就复习一下吧 从这里开始 面向对象 新的过程1:语言的发展历程是 经过 机器语言 比如0101010101 和 汇编语言 EXP JUMP等 高级语言 然后是面向过程 C等  最后是 面向对象 C++ 面向对象 主要是解决 代码 维护性差 可重用性差等,面向对象的概念百度下 都是概念性问题。不打了 2:面向对象的特征抽象  封装   继承   多态3:类 对象 和成员4:#include
using namespace std;
class Human //定义一个类

public: //公有成员
 void GetStature(); // 这里是调用 下面私有的身高
 void GetWeight(); //调用体重
private: //表示要被各个对象所封装的 是私有的 不能被共享 要调用此成员 必须要在公有上调用
 int stature; //身高
 int weight;//体重  可以自定义
};// 这里要加 分号 代表该类结束
5:#include
using namespace std;
class Human // 关于习惯问题,一般 的 类 的命名 首字母为大写 有的也有全部大写或者全部小写

public:
 void GetStature();   //这里由于是两个单词 所以 单词首字母大写 也有 get_stature
 void GetWeight();
private:
 int stature;  // 成员变量 这里一般 都为小写
 int weight;
};
// 习惯问题都是 看个人或者公司安排 这样可读性强 6:#include
using namespace std;
class Human

public:
 void GetStature(){cout< void GetWeight();
 void SetWeight(int j){weight=j;} //同下
 void Setstature(int i){stature=i;} //接受一个用户输入的值 int i 然后把 i 这个值 赋予给私有变量 stature
private:
 int stature; 
 int weight;
}; 
int main()
{
 int a,b;
    cout<<"请输入一个值:\n";
 cin>>a;
    cout<<"请输入一个值:\n";
 cin>>b;
 Human Mike;//这个是定义类中的对象。 Mike 就是对象 // 类是个虚拟的 而对象是个实实在在的
    Mike.Setstature(a); // 这里是输入一个值   接这条语句 void Setstature(int i){stature=i;}
 Mike.GetStature();// 调用函数里面的功能, 就是输出这个值
 Mike.SetWeight(b);
 Mike.GetWeight();
 return 0;
}
//对象是通过 . 来调用它的成员的 而对象是不能调用私有的成员数据的 必须要通过 公有的成员函数 来调用私有的成员数据
//下面是第二种方法定义 getweight 函数
void Human::GetWeight() //首先定义函数的返回值  当通过类来访问他的成员函数的时候 要通过:: 这个来访问
{
 cout<}
//很难把,建议多看下注释。 虽然是俺打的注释 不过俺也觉得有点难 其实多看几遍就清楚 也很简单
//如果你还是觉得不懂 建议看下我以前写的 函数定义 方面的章节 7:#include
using namespace std;
class Human

public:
 void run(){cout<<"我是鬼,我会跑步\n";} //成员函数只能被对象调用
 void eat(){cout<<"我是鬼,我会吃人\n";}
 void speak(){cout<<"我是鬼,我会说话\n";}
 void walk(){cout<<"我是鬼,我会走路\n";}
}; 
int main()
{
   // 所谓的 类 是个抽象的概念 比如 int 你不可能给他直接赋值 为 int =1  只有 int a=1 才可以。
 //class 其实也是一个类型  所以 你不冷 human.weight  这样 是错误的
 Human Tom; // 这里才是定义一个类的对象 只有对象才是存在的 才能被调用 就像下面这样
 Tom.eat();
 Tom.run();
 Tom.speak();
 Tom.walk();
 return 0;
 // 如果你调用一个不存在的成员函数 那么将会 出错 比如 Tom.wori(); “wori”: 不是“Human”的成员
}
8:#include
using namespace std;
class Human

public:
 int weight; //公有成员 可以被human 这个类所申明的对象 调用。如下面
 void set(int w) // 这里是设置 一个SET函数 并且接受用户输入的值 保存到W 把W赋值给 HIGHT 为什么要定义私有的成员?
  //因为可以提高安全性。比如下面 限定 用户输入的值 而且改动后 不会对下面的程序影响,便捷
 {
  if(w>0&&w<100)
   hight=w;
  else
  {
   cout<<"请输入一个大于0而小于100的数,否则set 将返回0\n";
   hight=0;
         }
 }
 int print(){return hight;} //这里是设置一个 print 函数  前面有个INT 为返回值 所以要返回 hight 的值 因为上面
 // 是把w 赋值给 hight 所以才返回他
private:
 int hight; //如果是这种私有的成员变量,那么就应该在公有上面设置函数才能调用
}; 
int main()
{
 Human tom; // 定义一个 tom 的对象
 tom.weight=4;
 cout<<"tom的体重为: "< Human jack;//定义一个jack的对象 都可以调用
 jack.weight=5;
 cout<<"jack的体重为: "< int b;
 cout<<"请输入一个数:\n";
 cin>>b;
 Human guinaoer;
 guinaoer.set(b); // 上面已经看到 是定义了一个 set 函数 用做接受 用户输入的值,所以我们要给他输入个值
 cout<<"guinaoer的身高为: "< return 0;
 // 如果你调用一个不存在的成员函数 那么将会 出错 比如 Tom.wori(); “wori”: 不是“Human”的成员
}
//代码有点多 不过都是我们学习过的 看起来应该不难 9:#include
using namespace std;
class Human

public:
 void set(int)  //当然你也可以只申明 在下面定义
 int print(){return hight;}
private:
 int hight;
}; 
int main()
{}
void Human::set(int w); //这里开始定义
{
 if(w>0&&w<100)
  hight=w;
 else
 {
  cout<<"请输入一个大于0而小于100的数,否则set 将返回0\n";
  hight=0;
 }
} 10:#include
using namespace std;
class Human
{
public:
 inline void set(int x,int y) //其实也只是在前面加了个 inline 注意申明在后面加; 非申明 不加。
 {
  i=x;
  j=y;
 }
 inline void print()
 {
  cout<<"两个数相乘的结果为:\n"< }
 //在函数体短小的情况下可以像上面用inline 调用 。内敛函数
private:
 int i,j;
};
int main()
{
   Human Tom;
   Tom.set(2,3);
   Tom.print();
   return 0;
}
// 为什么要分开写?因为如果全部写在一起 会导致程序变大 因为他是一个程序集。所以
//分开写 可以减少程序占用内存。 比如调用100此 那他的体积就太大了。 而 inline 就是为了解决这个问题而诞生的
//但是 inline 也有问题 他也会复制100此这个函数 但是他不是复制的程序集 所以相对小店  11:当然 其实上面的代码也可以分开写。 把类的代码#include 到  };   全部新建一个头文件 保存到头文件里面 比如 1.h那么你只需要调用的时候这样就可以了在CPP里面#include "1.h"  这样写 的好处在于,大家可以分工合作 因为类不需要关心 调用这个类的细节 只需要自己编就可以了 12:#include "iostream"
using namespace std;
class Human
{
public:
 void func(int x,int y) //const 这里如果加三const 的值。就会报错 因为他试图对私有成员 i 和 j进行修改 所以报错
 {
  i=x;
  j=y;
 }
 void print()const //加上const 的意思是,因为i 和j 值是被 print 输出 而不是修改 ,所以 不会报错
 {
  cout<<"两个数相乘的结果为:\n"< }
private:
  int i,j;
};//这样做的好处是帮助你差错 而且你如果确定参数不允许被修改 那么就 加上const
//在编程的时候 如果不修改的成员函数 那么就要加上const  这样是编程的好习惯 13:#include
using namespace std;
class rectangle //构造函数:由于在创建一个对象时 他的数据 不明确,所以要对其初始化。
 //假如我们在创建一个长方形的时候 要知道他的长和宽 但是不明确 就要使用构造函数 就像这个例子一样
{
public:
 rectangle(int a,int b) //区别在于 这里就是定义一个构造函数 他是 rectangle 的构造函数 用来构造长方形
 {
  weight=a;
  lenght=b;
 }
 int areo()
 {
     return lenght*weight;
 }
private:
 int weight,lenght;
};
int main()
{
 rectangle a(3,4);
  cout< return 0;
} 14:#include
using namespace std;
class rectangle
{
public:
 rectangle(){cout<<"我是构造函数:\n";} //这里是默认的构造函数。
 rectangle(int a,int b)
 {
  weight=a;
  lenght=b;
 }
 int areo()
 {
     return lenght*weight;
 }
private:
 int weight,lenght;
};
int main()
{
 rectangle a(3,4);
 rectangle b;//因为b 没有被初始化 所以会调用默认构造函数 因为默认构造函数已经被我们设定的默认构造函数 。像上面 我们就自己设置了一个默认
 //构造函数 所以输出 了 上面的内容
  cout< return 0;
} 15:
#include
using namespace std;
class xyry
{
public:
    xyry();
 ~xyry(); //这里就是析构函数的定义
};
xyry::xyry()
{
 cout<<"构造函数执行完毕\n";
}
xyry::~xyry()
{
 cout<<"析构函数执行完毕\n";
}
int main()
{
 xyry a; //这里开始是调用 默认的构造函数的功能 。
 return 0;
}//这里 由于 构造函数已经执行完毕,所以到这里才执行析构函数。因为析构函数是 释放构造函数的内存空间 所以要在
//构造函数执行完毕后才执行
//构造函数和析构函数都不能定义返回值 而且 析构函数是不能加参数的 一个类中只能有一个析构函数 16:#include
using namespace std;
class xyry
{
public:
    xyry();
 ~xyry();
};
xyry::xyry()
{
 cout<<"构造函数执行完毕\n";
}
xyry::~xyry()
{
 cout<<"析构函数执行完毕\n";
}
int main()
{
 xyry a[3];//定义数组 分别为 0 1 2 他会执行三次 构造函数和析构函数 先执行 3此构造 在释放构造内存三次
 return 0;
}
17:#include
using namespace std;
int main()
{
 int i=1;
number:i++; //这里的number 是一个标号 是为了配合goto 语句的使用
 cout<<"*";
 if (i<10)
 {
  goto number; // goto 意思是跳转到。。是个很古老的语句 ,goto 跳转到标号处在执行 i++
 }
 cout<<"\n程序结束\n";
 cout<<"*********\n";
 return 0;
}
//goto语句要慎用 而且现在用的很少,因为 goto 语句可以跳转到 程序任意位置 所以调试起来很难 18:#include
using namespace std;
int main()
{
 int i;
    cout<<"请输入一个数:";
 std::cin>>i;
 while (i<100&&i>3)//这里是判断输入的数是不是小于100 而且大于3的数,如果为真  执行大括号里面的 为假 就结束
 {
  cout<<"i:"<  i++;
 }
 return 0;
}//这个是 while 的语句使用方法,while 和if差不多 不过 if 是执行一次 而 while 是执行多次 直到 判断为假的时候才结束 19:#include
using namespace std;
int main()
{
 char content='y';//这里定义为 y 是因为不这样定义 程序就直接完了
 while (content=='y'||content=='Y')// 如果你输入的字符不是 y 或者 Y 其中的一个 那么就退出
 {
  cout<<"\n这里是演示的语句,如果想在看到这条语句请按y 否则按n\n";
  cin>>content;
 }
 //下面的代码是实现自定义循环次数的。
 int count,many;
 cout<<"\n请问你要看几次?\n";
    cin>>count;
 many=0;
 while (many {
  cout<<"HI,C++\n";
  many++;//这里必须加 因为 many的值为0  所以每次加1  这样加到和用户输入的值一样就退出循环
 }
 cout<<"\n程序执行完毕\n";
    return 0;
} 20:#include
using namespace std;
int main()
{
 int a;
 a=0;
 while (a<6)
 {
  a++;
  if (a==1)
  {
   continue;//continue 的作用是 不执行下面的语句 而跳转到 while 继续执行。
   //这里 如果 a=1 的时候 那么就不会输出a了 因为 continue 已经忽略过了下面的语句
  }
  else if (a==4)
  {
   break; //break 的意思结束循环。 比如 如果 a 等于4 的时候 这条循环语句就会被强行终止然后跳到循环外面的语句继续执行
  }
  cout<<"a的值为:"< }
 cout<<"a的值为:"< return 0;
} 21:#include
using namespace std;
int main()
{
 int a;//这里的a 必须要是外面 因为如果在 while里面 就变成无限循环了 a的值永远都是0
 a=0;
 while (1)// 1 的意思为真, 也可以写为 真 这里的意思是 永远为真 如果没有break 这里就是死循环
 {
  a++;
  int b;
  cout<<"请输入一个数:";
  cin>>b;
  if (a>3)
  {
   break;
  }
 }
 cout<<"程序执行了:"< cout<<"程序执行完毕\n";
 return 0;
}22:#include
using namespace std;
int main()
{
 int a,b;
 a=0;
 cout<<"你想看几次?\n";
 cin>>b;
 do //do while 语句 的意思是 无论条件是否成立 都执行 一次 。比如 如果你输入0 在正常情况下会直接退出 不执行 while 循环
 // 如果do while 那么将至少执行一次
 {
  cout<<"狼牙月,伊人憔悴\n";
  a++;
 } while (a return 0;
} 23:#include
using namespace std;
int main()
{
 int a,b;
 cout<<"你想看几次?\n";
 cin>>b;
 for (a=0;a  //需要注意的是第一个和第三个可以是语句 但是第二个 必须是表达式 for 比 while更加简洁
 {
  cout<<"天涯何处无芳草\n";
 }
 return 0;
} 24:#include
using namespace std;
int main()
{
 for (int a=0,b=0,c=0;c<3;a++,b++,c++)//这里是比较灵活的运用for 循环 因为 for 支持三种参数 所以 可以用 : 这个表示语句结束
  //如果是, 还可以继续写
 {
  cout<<"a:"< }
 return 0;
} 25:#include
using namespace std;
int main()
{
 int a=0;
 for (;;)//条件为空的 for 循环 就是这样的。 其实和 while(1) 是一样的  可以换了试试看
 {
  if (a<5)
  {
   a++;
   cout<<"哦哦哦哦哦哦哦哦哦\n";
  }
  else
   break;
 }
 for (int b=0;b<3;cout<<"b: "<  //但是却不如把 cout 写到 {} 里面
 {
  ;
 }
 return 0;
} 26:#include
using namespace std;
int main()
{
 int a,b;
 char c;
 cout<<"请输入多少行:";
 cin>>a;
 cout<<"请输入多少列:";
 cin>>b;
 cout<<"请输入一个字:";
 cin>>c;
 for (int i=0;i {
  for (int j=0;j  {
   cout<   // 结束后 输出 换行 因为b=3 所以这里要输出 三个a  才会结束这条语句 接着换行 因为 a=2 所以还要执行一次这个语句
  }
  cout<<"\n";
 }
 return 0;
} 27:#include
using namespace std;
int main()
{
 int a;
 cout<<"请输入一个值:";
 cin>>a;
 switch (a) //把 a 作为判断的条件。
 {
 case 0:cout<<"你输入的数字是0";//判断用户输入的数字是不是0 如果是 就输出一段话
  break;//如果上面的判断成立  那么就跳出 switch 语句
 case 1:cout<<"你输入的数字是1";//判断用户输入的数字是不是1 如果是 就输出一段话
  break;
 case 2:cout<<"你输入的数字是2";//同上 下面也是一样的意思
  break;
 case 3:cout<<"你输入的数字是3";
  break;
 case 4:cout<<"你输入的数字是4";
  break;
 case 5:cout<<"你输入的数字是5";
  break;
 case 6:cout<<"你输入的数字是6";
  break;
 case 7:cout<<"你输入的数字是7";
  break;
 default:cout<<"你输入的数不是1-7的有效数字\n";//如果输入的语句都不是 0-7  那么就默认执行这条语句
 }
 cout<<"程序执行完毕\n";
 return 0;
}//switch 语句比IF 语句好用的地方就是 可以进行多次判断 如果判断语句过多 if 使用起来是很麻烦的。 所以用 switch 语句 28:#include
using namespace std;
int main()
{
 int a;
 cout<<"请输入一个值:";
 cin>>a;
 switch (a)
 {
 case 0:cout<<"你输入的数字是0";
  //break;常见错误 没有break 语句 将会出现的错误 如果输入的是 0 因为 case 0 为真 所以从这里执行
  //但是程序没有break 所以不会跳出循环  还会一直执行下面的 语句 全部输出结束 如果 输出的是1
  //那么就从 case 1开始执行到完毕  同理也是一样 你输入的数字和case 为真 那就冲那里开始执行
  //如果超出1-2 比如 3 那么程序将直接输出 你输入的数不是1-7的有效数字
 case 1:cout<<"你输入的数字是1";
  //break;
 case 2:cout<<"你输入的数字是2";
  //break;
 default:cout<<"你输入的数不是1-7的有效数字\n";
 }
 cout<<"程序执行完毕\n";
 return 0;
} 29:#include
using namespace std;
int main()
{
    bool b=false;//先初始化为假
 for (;;)//无限循环
 {
  int a;
  cout<<"请输入一个值0-9 10退出:";
  cin>>a;
  switch (a)
  {
  case 0:cout<<"你输入的数是0\n";
   break;
  case 1:cout<<"你输入的数是1\n";
   break;
  case 2:cout<<"你输入的数是2\n";
   break;
  case 3:cout<<"你输入的数是3\n";
   break;
  case 4:cout<<"你输入的数是4\n";
   break;
  case 5:cout<<"你输入的数是5\n";
   break;
  case 6:cout<<"你输入的数是6\n";
   break;
  case 7:cout<<"你输入的数是7\n";
   break;
  case 8:cout<<"你输入的数是8\n";
   break;
  case 9:cout<<"你输入的数是9\n";
   break;//这里虽然有break 跳出 但是 他跳出的是 switch 并不是for
  case 10:b=true;//如果不输入10  不把 b的值赋值为真,那么将无限循环
   break;
  default:cout<<"你输入的不是1-10 的有效数字\n";
  }
  if (b==true)//跳出switch 后 会跟到执行这条命令 但是 b 是假 所以 break 无法执行 继续for 循环 在跳入 switch
  {
   break;
  }
 }
 cout<<"程序执行完毕!\n";
 return 0;
}//上面的程序比较复杂 但是都是学过的 主要是弄清楚 他的位置即可