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

做网站链接怎么做可以做分析图的地图网站

做网站链接怎么做,可以做分析图的地图网站,免费网站建设培训学校,国外电商网站目录 一、const成员1.1 取地址及const取地址操作符重载 二、再谈构造函数2.1 构造函数体赋值2.2 初始化列表2.3 explicit关键字 三、static成员3.1 概念3.2 特性 四、友元4.1 友元函数4.2 友元类 五、内部类六、匿名对象 一、const成员 将const修饰的“成员函数”称之为const成… 目录 一、const成员1.1 取地址及const取地址操作符重载 二、再谈构造函数2.1 构造函数体赋值2.2 初始化列表2.3 explicit关键字 三、static成员3.1 概念3.2 特性 四、友元4.1 友元函数4.2 友元类 五、内部类六、匿名对象 一、const成员 将const修饰的“成员函数”称之为const成员函数const修饰类成员函数实际修饰该成员函数隐含的this指针表明在该成员函数中不能对类的任何成员进行修改。 const对象不可以调用非const成员函数 - 权限放大非const对象可以调用const成员函数 - 权限缩小const成员函数内不可以调用其它的非const成员函数 - this指针被const修饰权限放大非const成员函数内可以调用其它的const成员函数 - 权限缩小 1.1 取地址及const取地址操作符重载 这两个默认成员函数一般不用重新定义 编译器默认会生成。 class Date { public:Date* operator(){return this;}const Date* operator() const{return this;} private:int _year; // 年int _month; // 月int _day; // 日 };这两个运算符一般不需要重载使用编译器生成的默认取地址的重载即可只有特殊情况才需要重载比如想让别人获取到指定的内容 二、再谈构造函数 2.1 构造函数体赋值 在创建对象时编译器通过调用构造函数给对象中各个成员变量一个合适的初始值。 class Date { public:Date(int year, int month, int day){_year year;_month month;_day day;} private:int _year;int _month;int _day; };虽然上述构造函数调用之后对象中已经有了一个初始值但是不能将其称为对对象中成员变量的初始化构造函数体中的语句只能将其称为赋初值而不能称作初始化。因为初始化只能初始化一次而构造函数体内可以多次赋值。 2.2 初始化列表 初始化列表以一个冒号开始接着是一个以逗号分隔的数据成员列表每个成员变量后面跟一个放在括号中的初始值或表达式。 Date(int year, int month, int day): _year(year), _month(month), _day(day) {}【注意】 每个成员变量在初始化列表中只能出现一次(初始化只能初始化一次)类中包含以下成员必须放在初始化列表位置进行初始化 引用成员变量 const成员变量 自定义类型成员(且该类没有默认构造函数时) class A { public:A(int a):_a(a){} private:int _a; }; class B { public:B(int a, int ref):_aobj(a), _ref(ref), _n(10){} private:A _aobj; // 没有默认构造函数int _ref; // 引用const int _n; // const };有一些变量(引用const)必须要在定义时初始化对于一个类来说在对象实列化时就整体定义了那么哪里是每个成员定义的地方呢 于是找到了对象实例化必须调用的构造函数但如果在构造函数体中的话可能出现多次初始化的情况。 最后规定了初始化列表这一概念其是每个成员变量定义初始化的位置 如上如所示 在构造函数体中的是赋值修改 能用初始化列表就建议使用初始化列表 尽量使用初始化列表初始化因为不管你是否使用初始化列表对于自定义类型成员变量一定会先使用初始化列表初始化(即使初始化列表未给值被初始化为随机值)。 我们前面讲的在声明时给缺省值其实那个缺省值就是给初始化列表用的 成员变量在类中声明次序就是其在初始化列表中的初始化顺序与其在初始化列表中的先后次序无关。 class A { public:A(int a):_a1(a), _a2(_a1){}void Print() {std::cout _a1 _a2 std::endl;} private:int _a2;int _a1; }; int main() {A aa(1);aa.Print(); }2.3 explicit关键字 构造函数不仅可以构造与初始化对象对于单个参数或者除第一个参数无默认值其余均有默认值的构造函数还具有类型转换的作用。 class C { public:C(int c 0):_c(c){} private:int _c; };int main() {C cc1(10);C cc2 2;const C cc3 3; //3处return 0; }如上程序可以正常运行正是因为单参数构造函数支持隐式类型转换 此处用2构造了一个类C的临时对象然后再拷贝构造cc2。即用一个整形变量给C类型对象赋值实际编译器背后会用2构造一个无名对象最后用无名对象给cc2对象进行拷贝构造。 3处也是可以的cc3引用3构造出来的临时对象具有常性需要const引用 用法粗略演示MyStack类中存放C类如果要插入数据就要先定义C类对象(C cc1(1))然后再插入(st.Push(cc1))。这样的话就太麻烦了我们便可用如上方法合理运用隐式类型转换 class MyStack { public:void Push(const C c) { /* ... */ } private:C cc;// ... }; int main() {MyStack st1;C cc1(1);st1.Push(cc1);st1.Push(2); //单参数构造函数支持隐式类型转换return 0; }虽然有多个参数但是创建对象时后两个参数可以不传递也具有类型转换作用如下日期类 Date(int year, int month 1, int day 1): _year(year), _month(month), _day(day){}用explicit修饰构造函数将会禁止构造函数的隐式转换。 三、static成员 3.1 概念 声明为static的类成员称为类的静态成员用static修饰的成员变量称之为静态成员变量用static修饰的成员函数称之为静态成员函数。静态成员变量一定要在类外进行定义初始化 面试题实现一个类计算程序中创建出了多少个类对象。 class A { public:A() { _scount; }A(const A t) { _scount; }~A() { --_scount; }static int GetACount() { return _scount; } //静态成员函数 private:static int _scount; //静态成员变量 }; int A::_scount 0; //类中声明类外定义 void TestA() {std::cout A::GetACount() std::endl;A a1, a2;A a3(a1);std::cout A::GetACount() std::endl; }3.2 特性 静态成员为所有类对象所共享不属于某个具体的对象存放在静态区静态成员变量必须在类外定义定义时不添加static关键字类中只是声明类静态成员即可用 类名::静态成员 或者 对象.静态成员 来访问静态成员函数没有隐藏的this指针不能访问任何非静态成员静态成员也是类的成员受public、protected、private访问限定符的限制 【问题】 静态成员函数可以调用非静态成员函数吗非静态成员函数可以调用类的静态成员函数吗 四、友元 友元提供了一种突破封装的方式有时提供了便利。但是友元会增加耦合度破坏了封装所以友元不宜多用。 友元分为友元函数和友元类 4.1 友元函数 问题现在尝试去重载operator然后发现没办法将operator重载成成员函数。因为cout的输出流对象和隐含的this指针在抢占第一个参数的位置。 this指针默认是第一个参数也就是左操作数了。但是实际使用中cout需要是第一个形参对象才能正常使用。所以要将operator重载成全局函数。但又会导致类外没办法访问成员此时就需要友元来解决。operator同理。 //若重载成类的成员函数 ostream operator(const Date* this, ostream _cout); // d1 cout; - d1.operator(d1, cout); 不符合常规调用 // 因为成员函数第一个参数一定是隐藏的this所以d1必须放在的左侧 ostream operator(ostream _cout) {_cout _year - _month - _day endl;return _cout; }友元函数可以直接访问类的私有成员它是定义在类外部的普通函数不属于任何类但需要在类的内部声明声明时需要加friend关键字。 //类中声明 friend ostream operator(ostream _cout, const Date d);//类外定义 ostream operator(ostream _cout, const Date d) {_cout d._year - d._month - d._day;return _cout; }说明: 友元函数可访问类的私有和保护成员但不是类的成员函数友元函数不能用const修饰因为const修饰的是隐藏的this而友元函数没有隐藏的this指针友元函数可以在类定义的任何地方声明不受类访问限定符限制一个函数可以是多个类的友元函数友元函数的调用与普通函数的调用原理相同 4.2 友元类 友元类的所有成员函数都可以是另一个类的友元函数都可以访问另一个类中的非公有成员。 友元关系是单向的不具有交换性。 比如上述Time类和Date类在Time类中声明Date类为其友元类那么可以在Date类中直接访问Time类的私有成员变量但想在Time类中访问Date类中私有的成员变量则不行。友元关系不能传递 如果C是B的友元 B是A的友元则不能说明C时A的友元。友元关系不能继承在继承位置再给大家详细介绍。 class Time {friend class Date; //声明日期类为时间类的友元类则在日期类中直接访问Time类中的私有成员变量 public:Time(int hour 0, int minute 0, int second 0):_hour(hour),_minute(minute),_second(second){} private:int _hour;int _minute;int _second; };class Date { public:Date(int year 2024, int month 6, int day 26):_year(year),_month(month),_day(day){}void TimePrint(){//直接访问时间类私有的成员变量std::cout _t._hour : _t._minute : _t._second std::endl;} private:int _year;int _month;int _day;Time _t; };五、内部类 概念如果一个类定义在另一个类的内部这个内部类就叫做内部类。 内部类是一个独立的类它不属于外部类更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。 注意内部类就是外部类的友元类 参见友元类的定义内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。 特性 内部类可以定义在外部类的public、protected、private都是可以的。注意内部类可以直接访问外部类中的static成员不需要外部类的对象/类名。sizeof(外部类)外部类和内部类没有任何关系。 class A { public://B类受A类的类域限制class B{public:void func(const A a){//B 天生就是 A 的友元, static成员直接访问std::cout a._a _c std::endl;}private:int _b;};void fx(const B b){//std::cout b._b std::endl; //不可访问单向友元} private:int _a;static int _c; }; int _c 10;int main() {A::B b; //若 B 设为private则不可访问std::cout sizeof(A) std::endl; // - 4return 0; }六、匿名对象 我们前面讲过不能这么(A aa1();)定义对象因为编译器无法识别是一个函数声明还是对象定义。 但是我们可以这么(A();)定义匿名对象匿名对象的特点不用取名字但是他的生命周期只有这一行我们可以看到下一行他就会自动调用析构函数! 仿函数部分用的较多。 Date d; d.Solution(10); //有名对象调用 Date().Solution(10); //匿名对象调用
http://www.hkea.cn/news/14432091/

相关文章:

  • 网站推广易网宣河南建设厅网站地址
  • 常见的网站推广方法有哪些石家庄开发网站
  • 合肥城建wordpress手动数据库优化
  • 山东企业站点seowordpress essential
  • 网站里的内容都是什么作用视觉网站建设
  • 团购网站开发代码找人设计logo多少钱
  • 建设四川网站.cc后缀网站
  • 网加思维做网站推广做垂直网站
  • 做国外购物网站他达拉非
  • 做网站建设哪家公司好android网站客户端开发
  • 京东网站建设流程北京装饰公司十强
  • php建设网站怎么用婚庆网站建设必要性
  • 哈尔滨免费模板建站深圳做自适应网站公司
  • 网站访问速度慢的原因新手学做网站pdf
  • 中国建设工程招投网站网站建设人才调研
  • 建设网站的注意事项windows服务器怎么建设网站
  • 静态网页做的网站怎么发到网上应聘网站开发的自我介绍
  • 规划排版网站营销网站都有哪些
  • 建一个个人网站一年多少钱单页型网站
  • 建设的网站百度搜不到为什么要用模板建站?
  • 手机网站建设维护协议书网络搭建项目案例
  • 沧州网站优化公司山东和城乡建设厅网站
  • 红桥网站建设黄页88网登录
  • 四站合一网站建设网站建设培训方案
  • 网页制作软件安卓版seo推广网址
  • 网络公司网站模板怎样为企业设计网站
  • 蓟县集团网站建设再高权重网站加自己的链接会容易被收录吗
  • 黄骗免费网站深圳网站建设服务哪便宜
  • 陕西交通建设集团西长分公司网站糟糕的网站设计
  • 建立网站预算邢台168