对象特性
构造函数 初始化析构函数 清理如果你不提供 编译器会提供 但是是空实现
[] [c++]12345678910111213141516171819202122232425262728293031323334353637#include<bits/stdc++.h>using namespace std;class Person{public: //1.构造函数没有返回值 不用写void //函数名与类名相同 //构造函数可以有参数 可以发生重载 //创建对象的时候 构造函数 而且只调用一次 Person() { //如果你不自己写 就是空的 cout<<"Person构造函数的调用"<<endl; } //2.析构函数 进行清理的操作 //没有返回值 不写void //函数名与类名相同 区别是在其之前加 ~ //不可以有参数 不能重载 //对象在销毁前自动调用一次 ~Person() { cout<<"Person析构函数的调用"; ...
封装
封装是c++面向对象的三大特性之一封装的意义:1.将属性和行为作为一个整体 表现生活中的事物2.将属性和行为加以权限控制
[] [c++]12345678910111213141516171819202122232425262728293031323334353637383940414243#include<bits/stdc++.h>using namespace std;//设计一个学生类 属性有姓名和学号//可以给姓名和学号赋值 可以显示学生姓名以及学号 class Student { //访问权限 //公共权限public: //属性 半径 string m_Name; int m_Id; //行为 成员函数以及成员方法 //显示姓名以及学号 void showStudent() { cout<<"姓名是"<<m_Name<<" "<<"学号是"<<m_Id<<endl; } //给姓 ...
函数高级
1.函数默认参数 如果设置了默认参数 自己传了数据就用传的数据 没传就是 默认值2.如果某个位置有了默认参数 那么从这个位置往后的位置也需要有默认参数3.如果函数声明有默认参数 那么函数实现就不能有默认参数 声明和实现只能有一个有默认参数
占位参数返回值类型 函数名(数据类型){}1.使用的时候必须传入参数2.占位参数可以有默认参数
[] [c++]123456789101112#include<bits/stdc++.h>using namespace std;void func(int a,int){ cout<<1<<endl;}int main(){ fun(10,10);}
函数重载作用:函数名可以相同 提高复用性需满足的条件1.在同一个作用域下2.函数名称相同3.函数参数类型不同 或者个数不同 或者顺序不同
注意:函数的返回值不可以作为函数重载的条件
[] [c++]12345678910111213141516171819#include<bits/stdc++.h>using n ...
引用
引用就是给变量起别名 两者地位相同数据类型 &别名=原名
[] [c++]1234567891011121314#include<bits/stdc++.h>using namespace std;int main(){ int a=10; int &b=a;//引用必须初始化 一旦初始化后不能发生改变 cout<<"a="<<a<<endl; cout<<"b="<<b<<endl; b=100; cout<<"a="<<a<<endl; cout<<"b="<<b<<endl;}
请看注释 引用做参数更方便
[] [c++]1234567891011121314151617181920212223242526272829303132333435363738394041424344#include< ...
内存模型
内存分区模型
不同区域存放的数据 赋予不同的生命周期 给我们更大的灵活编程
程序运行前只有代码区以及全局区
代码区存放函数体的二进制代码(cpu执行的机器指令) 由操作系统进行管理的1.共享:对于频繁被执行的程序只需要在内存中有一份代码2.只读:防止程序以外修改它的指令
全局区存放 全局变量 静态变量(static修饰) 字符串常量 全局常量(const修饰的全局变量)全局区不包括const修饰的局部变量程序结束后由操作系统释放
程序运行后
栈区编译器自动分配释放 存放函数参数值 局部变量 形参数据不要返回局部变量的地址
[] [c++]1234567891011121314151617#include<bits/stdc++.h>using namespace std;int * func(){ int a=10;//局部变量存放在栈区 栈区数据在函数执行完后自动释放 return &a; //返回局部变量的地址 }int main(){ int *p=func(); cout<<*p<<endl;//第一 ...
通讯录系统
系统需求包括添加联系人显示联系人删除联系人查找联系人修改联系人清空联系人退出通讯录
[] [c++]123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 ...