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

江西网站开发联系方式网站怎么挂服务器

江西网站开发联系方式,网站怎么挂服务器,Wordpress主页不要全部显示,网店推广的含义侯捷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/866769/

相关文章:

  • 外贸自建站多久能出单wordpress的pdf阅读
  • 深圳东莞的网站建设公司网店代运营哪里好
  • 做费网站wordpress折叠代码
  • 分析海报的网站企业网站服务费怎么做记账凭证
  • 海南建设大厅网站888网创
  • aspnet网站开发实例项目河南网站建设推广
  • ppt免费模板大全网站微网站建设网站
  • 郑州网站建设七彩科技网络服务器配置设计
  • 专业企专业企业网站设计洛阳青峰网络
  • 网站开发需要多少钱如何销售管理系统需求分析
  • 西安网站建设查派9861云南网站建设
  • 做微商网站制作网站曝光率
  • 平价网站平价网站建设建设百度电话号码
  • 有哪些做拎包入住的网站中国建设银行网站会员用户名
  • 用模板搭建的网站备案吗wordpress热门文章调用
  • 有哪些电商网站中山视角做网站的公司
  • 做网站 点击跳转html菜鸟教程下载
  • 苏州做公司网站设计的公司嘉盛建设集团官方网站
  • 建设银行e路护航官方网站登陆医疗网站做药品是干嘛
  • 十堰h5响应式网站西安网站制作厂家
  • 建设银行官方网站企业网银手机网站怎么dw做
  • 简单自适应网站wordpress联系表格
  • 雄县没有做网站的公司广告设计与制作就业率
  • 网站找谁做贵州网架公司
  • 做纸箱在什么网站找客户wordpress默认导航栏
  • wordpress采集自动伪原创福州360手机端seo
  • 工信部网站备案要求重庆网站公司设计
  • 宛城区建网站淘宝网页设计报告
  • 网站后台需求字节跳动员工人数2019
  • saas建站 cms科技感背景素材