using namespace std;
class Human //定义一个类
{
public: //公有成员
void GetStature(); // 这里是调用 下面私有的身高
void GetWeight(); //调用体重
private: //表示要被各个对象所封装的 是私有的 不能被共享 要调用此成员 必须要在公有上调用
int stature; //身高
int weight;//体重 可以自定义
};// 这里要加 分号 代表该类结束
using namespace std;
class Human // 关于习惯问题,一般 的 类 的命名 首字母为大写 有的也有全部大写或者全部小写
{
public:
void GetStature(); //这里由于是两个单词 所以 单词首字母大写 也有 get_stature
void GetWeight();
private:
int stature; // 成员变量 这里一般 都为小写
int weight;
};
// 习惯问题都是 看个人或者公司安排 这样可读性强
using namespace std;
class Human
{
public:
void GetStature(){cout<<stature;} //由于上一节只是申明一个成员函数 但是并没有实现功能 所以在这里要让他实现 输出功能
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<<weight; //该函数的实现代码 就是输出 成员变量 体重
}
//很难把,建议多看下注释。 虽然是俺打的注释 不过俺也觉得有点难 其实多看几遍就清楚 也很简单
//如果你还是觉得不懂 建议看下我以前写的 函数定义 方面的章节
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”的成员
}
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的体重为: "<<tom.weight<<endl;
Human jack;//定义一个jack的对象 都可以调用
jack.weight=5;
cout<<"jack的体重为: "<<jack.weight<<endl;
int b;
cout<<"请输入一个数:\n";
cin>>b;
Human guinaoer;
guinaoer.set(b); // 上面已经看到 是定义了一个 set 函数 用做接受 用户输入的值,所以我们要给他输入个值
cout<<"guinaoer的身高为: "<<guinaoer.print()<<endl; // set只用作 输入 要输出 所以是 print 函数
return 0;
// 如果你调用一个不存在的成员函数 那么将会 出错 比如 Tom.wori(); “wori”: 不是“Human”的成员
}
//代码有点多 不过都是我们学习过的 看起来应该不难
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;
}
}
using namespace std;
class Human
{
public:
inline void set(int x,int y) //其实也只是在前面加了个 inline 注意申明在后面加; 非申明 不加。
{
i=x;
j=y;
}
inline void print()
{
cout<<"两个数相乘的结果为:\n"<<i*j<<endl;
}
//在函数体短小的情况下可以像上面用inline 调用 。内敛函数
private:
int i,j;
};
int main()
{
Human Tom;
Tom.set(2,3);
Tom.print();
return 0;
}
// 为什么要分开写?因为如果全部写在一起 会导致程序变大 因为他是一个程序集。所以
//分开写 可以减少程序占用内存。 比如调用100此 那他的体积就太大了。 而 inline 就是为了解决这个问题而诞生的
//但是 inline 也有问题 他也会复制100此这个函数 但是他不是复制的程序集 所以相对小店
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"<<i*j<<endl;
}
private:
int i,j;
};//这样做的好处是帮助你差错 而且你如果确定参数不允许被修改 那么就 加上const
//在编程的时候 如果不修改的成员函数 那么就要加上const 这样是编程的好习惯
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<<a.areo();
return 0;
}
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<<a.areo();
return 0;
}
#include <iostream>
using namespace std;
class xyry
{
public:
xyry();
~xyry(); //这里就是析构函数的定义
};
xyry::xyry()
{
cout<<"构造函数执行完毕\n";
}
xyry::~xyry()
{
cout<<"析构函数执行完毕\n";
}
int main()
{
xyry a; //这里开始是调用 默认的构造函数的功能 。
return 0;
}//这里 由于 构造函数已经执行完毕,所以到这里才执行析构函数。因为析构函数是 释放构造函数的内存空间 所以要在
//构造函数执行完毕后才执行
//构造函数和析构函数都不能定义返回值 而且 析构函数是不能加参数的 一个类中只能有一个析构函数
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;
}
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 语句可以跳转到 程序任意位置 所以调试起来很难
using namespace std;
int main()
{
int i;
cout<<"请输入一个数:";
std::cin>>i;
while (i<100&&i>3)//这里是判断输入的数是不是小于100 而且大于3的数,如果为真 执行大括号里面的 为假 就结束
{
cout<<"i:"<<i<<endl;
i++;
}
return 0;
}//这个是 while 的语句使用方法,while 和if差不多 不过 if 是执行一次 而 while 是执行多次 直到 判断为假的时候才结束
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<count)
{
cout<<"HI,C++\n";
many++;//这里必须加 因为 many的值为0 所以每次加1 这样加到和用户输入的值一样就退出循环
}
cout<<"\n程序执行完毕\n";
return 0;
}
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的值为:"<<a<<endl;
}
cout<<"a的值为:"<<a<<endl; //这里会输出4 因为 a++的时候 a的值已经是4了 所以才输出4
return 0;
}
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<<"程序执行了:"<<a<<endl;
cout<<"程序执行完毕\n";
return 0;
}
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<b);// 后面要加 ; 这才代表这是一条语句
return 0;
}
using namespace std;
int main()
{
int a,b;
cout<<"你想看几次?\n";
cin>>b;
for (a=0;a<b;a++) // for 循环语句的使用和 while 差不多 就是把 a=0 和 a++放入了 for判断 语句中 。
//需要注意的是第一个和第三个可以是语句 但是第二个 必须是表达式 for 比 while更加简洁
{
cout<<"天涯何处无芳草\n";
}
return 0;
}
using namespace std;
int main()
{
for (int a=0,b=0,c=0;c<3;a++,b++,c++)//这里是比较灵活的运用for 循环 因为 for 支持三种参数 所以 可以用 : 这个表示语句结束
//如果是, 还可以继续写
{
cout<<"a:"<<a<<" b:"<<b<<" c:"<<c<<endl;
}
return 0;
}
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: "<<b++<<endl)// 这里就是功能为空的语句 也可以这样写 虽然没问题
//但是却不如把 cout 写到 {} 里面
{
;
}
return 0;
}
using namespace std;
int main()
{
int a,b;
char c;
cout<<"请输入多少行:";
cin>>a;
cout<<"请输入多少列:";
cin>>b;
cout<<"请输入一个字:";
cin>>c;
for (int i=0;i<a;i++)//for循环嵌套。在这条语句中 这个是外层循环
{
for (int j=0;j<b;j++)//这个是内循环 。
{
cout<<c;// 意思是 当你输入 2 3 a 的时候 外层进行循环 当到这里的时候 开始了内循环 只有 j<3的时候 才结束
// 结束后 输出 换行 因为b=3 所以这里要输出 三个a 才会结束这条语句 接着换行 因为 a=2 所以还要执行一次这个语句
}
cout<<"\n";
}
return 0;
}
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 语句
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;
}
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;
}//上面的程序比较复杂 但是都是学过的 主要是弄清楚 他的位置即可
