手机银行网站建设,东莞现代建设有限公司,做随车吊网站要多大,自己做网站卖能赚钱吗1.类和对象补充#xff1a;
静态成员#xff0c;有静态成员函数和静态成员变量#xff0c;特点是不为类的某个对象所有#xff0c;而是为同类所有对象共有。因为是为同类对象共同拥有#xff0c;所以计算对象的大小的时忽略静态成员。因为静态成员是放在静态区#xff0…1.类和对象补充
静态成员有静态成员函数和静态成员变量特点是不为类的某个对象所有而是为同类所有对象共有。因为是为同类对象共同拥有所以计算对象的大小的时忽略静态成员。因为静态成员是放在静态区对象的作用只是确定类域所以类名*0-静态成员名是可以访问的不会引发报错。
静态成员不能给缺省值因为静态成员的初始化不是在初始化列表里进行而是在类外进行。假设是在初始化列表内进行不就相当于一个对象对应一个静态成员了吗同时类内的只是声明定义需要在类外定义的时候需要写类名且定义与声明必须分离。
静态成员函数无this指针因为不是特别对于某个对象。
调用方式有三种类名函数名对象名.函数名类名.函数名
静态成员函数内只能有静态成员不能有非静态成员因为没有this指针无法访问非静态的。但是非静态成员函数内可以有静态、非静态的成员。
利用构造函数、静态成员、定义数组可以实现一些简单的循环过程。如从1加到n的求和等 2.友元
分为友元函数和友元类
友元函数无this指针因为不是成员函数因为没有this指针所以无法将const写在形参和函数体之间。一个函数可以是多个类的友元函数。友元函数在类内的声明可以在类内任何位置且不受类内的访问限制符如public/private等的影响。
友元类注很容易理解反 如果希望类A能访问类B的私有成员则类A是类B的友元类B内声明类A是友元。 友元类是单向的如类A是类B的友元则类A可以访问类B私有成员但类B不能访问类A的私有成员。同时友元类也没有传递性比如类C是类A的友元类A是类B的友元但类C不是类B的友元即类C不能访问类B的私有成员。
友元类很容易混因此不建议多用 3.内部类
顾名思义就是在一个类的声明内有另一个类的声明此时“另一个类”就是内部类而外部的就是外部类。
此时求外部类的大小的时候忽略内部类因为内部类和外部类本质上是两个相互独立的类。
内部类的特点1.受外部类的访问限定符和类域的影响。2.可以访问外部类的私有成员内部类天生是外部类的友元3.定义内部类的对象“外部类内部类 对象名。 4.编译器的某些优化
因为不同编译器、编译器版本的影响优化的内容可能有所不同此处主要说明一些比较常见的优化了解即可。
1.函数实参、形参之间是值传递的时候调用的是拷贝构造。如果不重写拷贝构造是浅拷贝、重写可能是深拷贝
2.匿名对象具有常性如果引用一个匿名对象则引用必须用const修饰。同时匿名对象做函数实参形参必须用const修饰。在用const修饰以后匿名对象的生命周期被延长可以视为匿名对象转变成了有名对象名字就是形参名或引用名
3.在例如函数返回值、对象初始化时如果出现连续的构造、拷贝构造编译器可以优化成一步构造。常出现与用隐式转换、匿名对象的场合。
4.函数返回值是一个对象时是先把该对象用拷贝构造给一个临时对象在用赋值的方式把临时对象赋给实际接收的对象。 5.拷贝构造和赋值不能合并。 5.内存管理
1.C兼容c因此malloc、calloc、realloc、free等依然可以使用。其中callocmallocmemsetrealloc有原地扩容和异地扩容两种。
2.C特有的是new和delete.
利用new创建new类型会自动计算大小且不用强制类型转换对于内置类型不处理对自定义类型会调用默认构造能调用构造函数是其一大特点。此时销毁delete 指针名。
创建数组new类型个数此时销毁delete[]指针名。
开辟空间同时初始化new类型[初始化的值]或new类型{值1、值2、值3...}
malloc和new的区别malloc对于自定义类型不做处理但new可以自动调自定义类型的构造函数并且可以初始化。同时delete也会自动调用析构函数并释放空间。
一般的初始化自定义类型常用匿名函数和隐式类型转换。