当前位置: 首页 > news >正文

手机怎么建设视频网站百度云手机app下载

手机怎么建设视频网站,百度云手机app下载,网上做广告的网站,南宁邕网科技公司文章目录 类的6个默认成员函数构造函数默认构造函数的用处#xff1a; 析构函数默认析构函数的用处 拷贝构造函数赋值运算符重载取地址及const取地址操作符重载 类的6个默认成员函数 对于一个没有成员的类来说#xff0c;称之为空类#xff1b; 但空类并非完全是空的#… 文章目录 类的6个默认成员函数构造函数默认构造函数的用处 析构函数默认析构函数的用处 拷贝构造函数赋值运算符重载取地址及const取地址操作符重载 类的6个默认成员函数 对于一个没有成员的类来说称之为空类 但空类并非完全是空的类会自动生成6个默认的成员函数 构造函数 概念构造函数是一种特殊的成员函数它在创建对象时被调用用于初始化对象的数据成员。构造函数和类名相同并且没有返回类型甚至不能包含return语句。 class Date { private:int _year;int _month;int _day; public:void Print(){cout _year - _month - _day endl;} }; int main() {Date d1;d1.Print(); }像这种情况我们没有创建一个构造函数编译器会自动调用默认构造函数 产生结果都是随机值 class Date { private:int _year ;int _month;int _day; public://无参构造函数Date(){_year 1;_month 1;_day 1;}//如果没有构造参数编辑器会自动生成一个默认构造参数void Print(){cout _year - _month - _day endl;} }; int main() {Date d1;d1.Print(); }在我们的主程序中我们没有使用我们的构造函数但实际上在我们创建d1对象时编译器就已经开始调用我们的构造函数了 创建类类型对象时由编译器自动调用以保证每个数据成员都有 一个合适的初始值并且在对象整个生命周期内只调用一次。 也可将上面的无参构造参数改为这两种 //全缺省参数构造函数Date(int year 2, int month 2, int day 2){_year year;_month month;_day day;}//普通的构造函数Date(int year, int month, int day){_year year;_month month;_day day;} int main() {//调用带参数的构造函数在创建对象的后面加上...Date d1(2023,10,24); }这些都是构造函数那有什么不同吗 在这里无参的构造函数和全缺省的构造函数都称为默认构造函数并且默认构造函数只能有一个。 当然现在一些编译器也不让存在多个构造函数了 所以如果要自己实现构造参数的话写一个即可 而在C11给出规定C11支持在内置类型变量声明处加上缺省值 我们也可以这么操作。 默认构造函数的用处 C把类型分成内置类型(基本类型)和自定义类型。内置类型就是语言提供的数据类型如int/char…自定义类型就是我们使用class/struct/union等自己定义的类型。 如果类中存在自定义类型的成员可没有办法用过赋予缺省值来进行初始化所以可以通过调用默认构造参数来实现对该类型进行初始化 class Stack { private:int* _a;int _top;int _capacity; public:Stack(int capacity 3){cout Stack(int capacity 3) endl;_a (int*)malloc(sizeof(int) * capacity);if (_a nullptr){perror(Stack Fail);exit(-1);}_top 0;_capacity capacity;}};class MyQuene { private:Stack _PushSta;Stack _PopSta;int _size20; public:void Print(){cout MyQuene Print endl;} };int main() {Stack s1;MyQuene m1;return 0; }析构函数 概念析构函数是一种特殊的成员函数它在对象被销毁时自动调用用于执行清理操作和释放对象所占用的资源。析构函数的名称与类名相同但前面需加上一个波浪线~作为前缀。 注意如果没有明确的定义析构函数编译器会提供一个默认的析构函数。默认析构函数不执行任何清理工作仅释放对象所占内存空间。 class Date { private://C11支持在内置类型变量声明处加上缺省值int _year 1;int _month 1;int _day 1; public:Date(int year 2, int month 2, int day 2){_year year;_month month;_day day;}void Print(){cout _year - _month - _day endl;} //析构函数~Date(){cout ~Date() endl;} }; int main() {Date d1;return 0; }默认析构函数的用处 class Stack { private:int* _a;int _top;int _capacity; public:Stack(int capacity 3){cout Stack(int capacity 3) endl;_a (int*)malloc(sizeof(int) * capacity);if (_a nullptr){perror(Stack Fail);exit(-1);}_top 0;_capacity capacity;}//自定义一个析构函数~Stack(){cout ~Stack() endl;free(_a);_a nullptr;_top _capacity 0;} //默认的析构函数不会释放堆区上的空间需要自己实现对资源的释放};class MyQuene { private:Stack _PushSta;Stack _PopSta;int _size20; public:void Print(){cout MyQuene Print endl;}//让它默认生成析构函数 };int main() {Stack s1;MyQuene m1;return 0; }析构函数会在一个函数内进行栈帧销毁之前将类对象进行析构 拷贝构造函数 概念拷贝构造函数是一种特殊的成员函数用于创建一个新对象并将其初始化为已有对象的副本。只有单个形参该形参是对本类类型对象的引用(一般常用const修饰)在用已存在的类类型对象创建新对象时由编译器自动调用。 特征 拷贝构造函数是构造函数的一个重载形式。 拷贝构造函数的参数只有一个且必须是类类型对象的引用 普通 情况下 class Date { private:int _year;int _month;int _day; public:Date(int year 2, int month 2, int day 2){_year year;_month month;_day day;}void Print(){cout _year - _month - _day endl;}~Date(){cout ~Date() endl;}void Func(Date d){d.Print();} };class Stack { private:int* _a;int _top;int _capacity; public:Stack(int capacity 3){cout Stack(int capacity 3) endl;_a (int*)malloc(sizeof(int) * capacity);if (_a nullptr){perror(Stack Fail);exit(-1);}_top 0;_capacity capacity;}//自定义一个析构函数~Stack(){cout ~Stack() endl;free(_a);_a nullptr;_top _capacity 0;}void Print(){cout Stack endl;}void Func(Stack* s){s-Print();}}; class MyQuene { private:Stack _PushSta;Stack _PopSta;int _size20; public:void Print(){cout MyQuene Print endl;}//让它默认生成析构函数 };int main() {Date d1(2023,10,22);d1.Func(d1);Stack s1;s1.Func(s1); }原因 所以这里就有了拷贝构造函数这一函数 写法 Date(const Date d){cout Date(Date d) endl;_year d._year;_month d._month;_day d._day;}Stack(Stack s){cout Stack(Stack s) endl;_a (int*)malloc(sizeof(int) * s._capacity);if (_a nullptr){perror(Stack Fail);exit(-1);}_top s._top;_capacity s._capacity;} int main() {Stack s1;s1.Func(s1);MyQuene q1;MyQuene q2(q1); } 由于d1对象已存在所以对于形参d来说就会自动调用拷贝构造函数 注意 测试 Date Test(Date d) {Date dd(d);return dd; }赋值运算符重载 概念C为了增强代码的可读性引入了运算符重载运算符重载是具有特殊函数名的函数也具有其返回值类型函数名字以及参数列表其返回值类型与参数列表与普通的函数类似。针对自定义类型 函数名字为关键字operator后面接需要重载的运算符符号。 函数原型返回值类型 operator操作符(参数列表) 注意 不能通过连接其他符号来创建新的操作符比如operator 重载操作符必须有一个类类型参数 用于内置类型的运算符其含义不能改变例如内置的整型不 能改变其含义 作为类成员函数重载时其形参看起来比操作数数目少1因为成员函数的第一个参数为隐藏的this 在Date类中写 //域内有一个隐藏的this指针所以把第一个参数看作是this指针所指向的bool operator(const Date y){if (_year y._year){return true;}else if (_year y._year _month y._month){return true;}else if (_year y._year _month y._month _day y._day){return true;}return false;}测试 Date d1;Date d2(2023, 10, 22);cout (operator(d1, d2)) endl;//可以简写cout (d1 d2) endl;d1被看作是this指针指向的对象在写运算符重载函数时可以省略第一个比较参数 在实际上的比较操作时可以像内置类型一样直接使用运算符来进行比较 对于赋值运算符重载他是有默认函数的也就是以值的方式逐字节拷贝 默认情况下 自己实现情况下 //引用提高效率由于主函数会有一个类对象来进行赋值所以对象是存在的Date operator(const Date y){if (this ! y)//如果是类对象对自己赋值这种情况没必要{_year y._year;_month y._month;_day y._day;}return *this;}赋值运算符只能重载成类的成员函数不能重载成全局函数 像这种赋值运算对于一般情况都是可以使用默认的赋值重载的但如果类成员函数涉及到资源管理的话就必须要自己实现 取地址及const取地址操作符重载 这两个默认成员函数一般不用重新定义 编译器默认会生成。 class Date { private :int _year ; int _month ; int _day ; public :Date* operator(){return this ;}const Date* operator()const{return this ;}};
http://www.zqtcl.cn/news/221085/

相关文章:

  • 河南网站备案地址静安青岛网站建设
  • 烟台网站建设推荐企汇互联见效付款查看网站被百度收录
  • 做标签网站360街景地图怎么看
  • 深圳网站建设领先天津建设企业网站
  • 网站建设犭金手指C排名15温州 建网站的公司
  • 邢台建设银行官方网站公众号开发者密码是什么意思
  • 网站录入信息 前台查询功能怎么做营销网站主题有哪些内容
  • 网站SEO的评价触屏音乐网站源码
  • 网站开发u盘128够吗网站建设是固定资产嘛
  • 网站域名备案信息wordpress搜索文章内容
  • 出口退税在哪个网站做怎么在一起做网站上拿货
  • 网站友链查询传到网站根目录
  • 网站服务器端口设置北京专业网络直播制作
  • 可以免费做演播的听书网站南京企业自助建站
  • 软件下载类型网站怎么做长沙官网优化技术
  • 药品网站订单源码外贸网站建设服务器
  • 深圳网站制作07551免费开发网站
  • 如何直接用jsp做网站不写servletwordpress模板 单栏
  • 长沙网站建设哪个公司好设计公司网站 唐山
  • 原创小说手机网站制作需要多少钱郴州seo外包
  • 深圳市大鹏建设局网站网站关键词没排名怎么办
  • 水果商城网站制作多少钱c#如何做公司网站
  • 国内做进口的电商网站网站建设的经验做法
  • 蚂蚁搬家公司官方网站免费网站软件制作
  • 搭建网站要用到的工具外链代发免费
  • 肥城网站建设流程oem中国代加工网
  • 到底建手机网站还是电脑网站网站视频怎么做
  • 小区网站建设前端手机网站
  • 做一个网站价格WordPress好看的404
  • 查看注册过的网站在线网站软件免费下载