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

老域名新网站网站设计的主要机构有哪些?

老域名新网站,网站设计的主要机构有哪些?,建设银行的官方网站电脑版,企业查询系统 工商侯捷C面向对象高级编程 本文是学习笔记#xff0c;仅供个人学习使用#xff0c;如有侵权#xff0c;请联系删除。 如果你对函数参数何时该传引用#xff08;#xff09;、何时该传值#xff0c;对函数返回值是否传引用#xff08;#xff09;#xff0c;对…侯捷C面向对象高级编程 本文是学习笔记仅供个人学习使用如有侵权请联系删除。 如果你对函数参数何时该传引用、何时该传值对函数返回值是否传引用对构造函数的初始列的语法对如何重载操作符operator对友元函数friend的作用对函数名称后面加const的意思对C标准库中临时对象 typename()的用法等存在疑惑那么你就应该学习一下这门课。 学习地址 Youtube: C面向对象高级编程侯捷 B站: 侯捷C之C面向对象高级编程上 文章目录 侯捷C面向对象高级编程2 头文件和类的声明3 构造函数4 参数传递与返回值5 操作符重载与临时对象操作符重载1——成员函数操作符重载2——非成员函数 6 复习Complex类的实现过程 2 头文件和类的声明 头文件的防卫式声明guard #ifndef _COMPLEX_ #define _COMPLEX_ #endif 作用防止重复声明 头文件布局 #ifndef __COMPLEX__ #define __COMPLEX__ // 0. 前置声明 # includecmath class ostream; class complex;complex __doapl(conplex* ths, const complex r);// 1. 类——声明 class complex {... };// 2. 类——定义 complex::function ... #endif不使用模板的复数complex类 class complex {public:// 构造函数complex(double r 0, double i 0): re(r), im(i) // // 构造函数的初始化列{}// 成员函数complex operator (const complex); double real() const { return re;}double imag() const { return im;}private:double re, im; // 私有数据friend complex __doapl(complex*, const complex); // 友元函数 };// 使用 {complex c1(2, 1);complex c2;... }模板简介使用模板的复数complex类 templatetypename T class complex {public:complex(T r 0, T i 0): re(r), im(i) // 构造函数的初始化列{}complex operator (const complex);T real() const { return re;}T imag() const { return im;}private:T re, im;friend complex __doapl(complex*, const complex); };// 使用模板的例子指定T的具体类型 {complexdouble c1(2.5, 1.5);complexint c2(2, 6);... }3 构造函数 inline函数若在class body内定义完成便自动成为inline候选人 补充 函数名后面加const的作用比如上面的 double real() const; c 函数前面和后面 使用const 的作用 前面使用const 表示返回值为const 后面加 const表示函数不可以修改class的成员 请看这两个函数 const int getValue(); int getValue2() const; 参考https://blog.csdn.net/SMF0504/article/details/52311207 构造函数名称和类名相同没有返回值类型 // 构造函数不好的写法 class complex {public:complex(double r 0, double i 0){ re r; im i;} // 在赋值阶段做效率差private:double re, im; };// 构造函数好的写法 // 等价于上面 class complex {public:complex(double r 0, double i 0): re(r), im(i) {} // 初始列在初始化阶段做效率高private:double re, im; }; 创建对象的例子 {complex c1(2, 1);complex c2;complex* p new complex(4);... }构造函数的重载overloadingcpp允许同名函数存在比如构造函数可以有多个。 构造函数可以被放在private区在设计模式中单例模式singleton便是这样做的 class A { public:static A getInstance();setup() { ... } private:A();A(const A rhs);... }A A::getInstance() {static A a;return a; }外界调用时 A::getInstance().setup();4 参数传递与返回值 常量成员函数在函数名后面加const表示函数不改变成员内容 double real() const { return re;} double imag() const { return im;}参数传递 pass by value 传具体的值 pass by referenceto const传引用 传引用相当于c语言中的传指针 class complex {public:complex(double r 0, double i 0): re(r), im(i) {}complex operator (const complex); // 传引用速度快double real() const { return re;}double imag() const { return im;}private:double re, im;friend complex __doapl(complex*, const complex); // 传引用 };使用举例 {complex c1(2, 1); // 构造函数传参double类型传值complex c2;c2 c1; // 运算传的是引用const complex速度快cout c2; }使用const的原因是使用引用传递不希望对方对内容进行修改。 不使用const表示可以对该内容进行修改,比如下面的os参数 ostream operator (ostream os, const complex x) {return os ( real(x) , imag(x) ); }返回值传递 return by value return by referenceto const friend 友元自由取得friend的private成员 这会打破类的封装性 class complex { private:double re, im;friend complex __doapl(complex*, const complex); // 友元函数的声明 };// 友元函数的定义 inline complex __doapl(conplex* ths, const complex r) {ths-re r.re; // 可以直接获取complex的私有成员变量ths-im r.im;return *ths; }相同class的各个objects互为友元可以访问到私有数据打破封装性 class complex {public:complex(double r 0, double i 0): re(r), im(i){}int func(const complex param){ return param.re param.im;}private:double re, im; }; 使用举例 {complex c1(2, 1); complex c2;c2.func(c1); // c2这个复数调用func函数直接拿到c1这个复数的实部和虚部并求和 }什么情况下不能return by reference local objects局部对象的引用不要传出去因为在函数结束的时候局部变量的生命周期已经结束了。 5 操作符重载与临时对象 操作符重载1——成员函数 do assignment plus是 __doapl函数的含义 inline complex // 接收端不用管接收形式可以是引用可以是值。这里是引用接收 __doapl(conplex* ths, const complex r) {ths-re r.re; // 可以直接获取complex的私有成员变量ths-im r.im;return *ths; // 返回指针指向的内容,object }inline complex complex::operator (const complex r) // 操作符重载 {return __doapl(this, r); // this指的是调用者这是一个指针 }{complex c1(2, 1); complex c2(5);c2 c1; // 这里使用 这里的c2就是调用者就是上面的this而c1就是上面的r }return by reference传递者无需知道接收者是以什么形式接收。 上面的inline complex complex::operator (const complex r){}函数的返回类型是complex而不是void它的考虑是使用者如下的调用方法 c3 c2 c1;这样就必须有返回值。 操作符重载2——非成员函数 非成员函数无this指针 class body之外的各种定义 inline double imag(const complex x) {return x.imag(); }inline double real(const complex x) {return x.real(); }{complex c1(2, 1);cout imag(c1);cout real(c1); }为了对应client的三种可能用法开发三个函数: 操作符号的重载 inline complex operator (const complex x, const complex y) {return complex(real(x) real(y), imag(x) imag(y)); }inline complex operator (const complex x, const double y) {return complex(real(x) y, imag(x)); }inline complex operator (double x, const complex y) {return complex(x real(y), imag(y)); }// 使用 {complex c1(2, 1); complex c2;c2 c1 c2;c2 c1 5;c2 7 c1; }上面这三个函数的返回值为什么是值而不是引用呢 这里务必不能使用return by reference因为返回的必定是个local object。具体而言这里计算的是两者之和它的结果存在局部变量里面生命周期离开函数就死亡reference就会指向错误的东西。 临时对象 typename(); 临时想要的对象不想要给它名称下一行生命周期就结束了。 比如上面的return complex() 正负号重载 取反negate inline complex // 这里可以改成return by reference operator (const complex x) {return x; // 不是local object }inline complex // 这里务必不能使用return by reference因为返回的必定是个local object。 operator - (const complex x) {return complex(-real(x), -imag(x)); }// 使用 {complex c1(2, 1); complex c2;cout -c1;cout c1; }下面是重载 inline bool operator (const complex x, const complex y) {return real(x) real(y) imag(x) imag(y); }inline bool operator (const complex x, double y) {return real(x) y imag(x) 0; }inline bool operator (double x, const complex y) {return x real(y) imag(y) 0; }// 使用 {complex c1(2, 1); complex c2;cout (c1 c2);cout (c1 2);cout (0 c2); }共轭复数的实现以及 操作符的重载 操作符的重载ostream operator (ostream os, const complex x){}中为什么传入的参数ostream os不用加const呢这是因为output流的状态一直在改变所以不能用const。 inline complex conj (const complex x) {return complex(real(x), -imag(x)); }#includeiostream.h ostream operator (ostream os, const complex x) {return os ( real(x) , imag(x) ); }// 使用 {complex c1(2, 1);cout conj(c1); // 输出 (2, -1)cout c1 conj(c1); // 输出 (2, 1) (2, -1) 连续输出要求 返回值还是ostream不能是void }6 复习Complex类的实现过程 整个complex类的实现过程如上面的笔记所示这里不再展示。另外complex这个类是class without pointer member(s)后面会将class with pointer member(s)讲的是string类。
http://www.pierceye.com/news/859835/

相关文章:

  • 外国做问卷可以赚钱的网站做中国菜的外国网站
  • 青岛市建设厅网站快递网站建设
  • 昆明网站WordPress文章怎么折叠
  • 拖拽建站系统源码企业主题展厅设计公司
  • asp.net网站的数据库配置张家港网站 设计制作
  • 聊城手机网站建设多少钱扬州网站建设哪个好薇
  • 云南安宁做网站的公司手机网页制作软件中文版
  • 如何做征信公司网站做谷歌推广一定要网站吗
  • 重庆市做网站的公司有哪些苏州网站建设设计公司
  • 网站制作计算机域名解析到网站
  • 自己做的电影网站打开很慢wordpress 防采集
  • 西安专业网站建设公司排名做网站编写
  • 做电影网站还能赚钱云南网站建设哪家公司好
  • 重庆定制网站开发什么是网络营销战略
  • 网站建设硬件方案精准客源app
  • 网站视觉优化怎么做电子商务网站建设参考文献2018
  • 服务器可以吧网站做跳转吗wordpress 远程图片本地化
  • 网站在线访谈栏目建设个人网站可以备案了吗
  • 汉口北做网站搜索广告是什么
  • 电商网站可以用dw做嘉兴网站建设平台
  • 做网站是数据库应该放在哪里建筑工程水平防护网
  • vps网站无法通过ip访问网站怎么做的支付宝接口
  • 怎么创建一个博客网站网站的c4d动画是怎么做的
  • 西安做企业网站科技论文发表网
  • html 手机网站开发企业做网站的合同
  • 建立wordpress网站吗全州建设完小网站
  • 网站域名注册证书是什么制作WordPress友情链接
  • 如何在解决方案中新建网站html网页制作的软件下载
  • 企业网站怎么做优化开小加工厂去哪接单子
  • 网站建设推广费怎么做账域名和网站绑定