做电子书下载网站会不会侵权,网站建设类目,杭州做seo的公司,屏蔽阿里云网站1.
构造函数#xff1a;当没有写任何构造函数(含拷贝构造)#xff0c;系统会生成默认的无参构造#xff0c;并且访问属性是共有。
默认拷贝构造#xff1a;当没有写任何的拷贝构造#xff0c;系统会生成默认的拷贝构造-是一个浅拷贝
写了拷贝构造函数#xff0c;这…1.
构造函数当没有写任何构造函数(含拷贝构造)系统会生成默认的无参构造并且访问属性是共有。
默认拷贝构造当没有写任何的拷贝构造系统会生成默认的拷贝构造-是一个浅拷贝
写了拷贝构造函数这两默认的就都没有了。
在c中一个类可以有多个构造函数被称为构造函数的重载。但是析构函数只能有一个。
2.
new delete maloc free的区别
new delete:调用对象的构造和析构初始化对象和清理对象。是安全的它们知道要分配和释放的对象类型。
malloc free:用于分配和释放内存块而不是对象是不安全的返回void*,需要显式类型转换。
3.
常量指针指向一个常量数据通过这个指针不能修改所指向的数据内容。
const int* p1;
int a10;
const int b20;
p1a;合法
*p130;不合法
p1b;合法
指针常量指针常量本身是一个常量这意味着一旦初始化后指针的地址不能再改变但是通过这个指针可以修改它所指向的内容。
int* const p2;
int a10;
int b20;
int* const p2a;//p2必须在定义时初始化
*p230;合法
p2b;不合法
const int c33;
int* const p3c;//不合法
4.
static修饰成员属性不依赖对象类共用的不可以被继承类外初始化不能在.h文件初始化重定义问题要在.cpp 文件初始化。
static 修饰成员函数没有this指针可以不依赖对象使用类共用的不可以声明为虚函数不能直接调用类中的非静态成员可以利用对象调用。
普通成员函数不但可以直接调用其他的普通成员函数也可直接使用静态成员函数。
反过来不行没this指针。
static类外只在当前文件中可见。只初始化一次。
5.
virtual修饰虚函数实现动态多态哪些函数不能用virtual修饰static,构造友元普通类外内联编译确定展开虚函数运行时确认
子类重写父类的方法时如果父类的方法是虚函数那么子类的方法即使不显示地使用virtual也是虚函数。
虚函数重写函数原型不用一模一样例如协变如果返回类型是指针或引用重写函数可以使用基类返回类型的派生类这称为协变返回类型。
virtual Base* clone() const{return new Base(*this);}
Derived* clone() const override{return new Derived(*this);}
6.
inline内联函数适用于代码少调用频繁的函数编译时在执行的位置直接展开函数是空间来换时间的操作。递归函数不能是内联函数会导致代码膨胀使得程序的可读性和可维护性大大降低栈溢出。
7.
多态时使用的是父类的虚函数列表错多态性是基于派生类的虚函数表来实现的。当通过基类指针或引用调用虚函数时实际调用的是派生类的虚函数表中的函数。
多态下子类定义了未重写的虚函数由于不能通过父类指针调用所以其并未出现在虚函数列表中。错即使子类定义了一个新的虚函数而没有在基类中声明该虚函数仍然会出现在子类的虚函数表中。通过父类指针无法调用的原因是父类中没有定义这个虚函数而不是因为它不存在于虚函数表中。
8.
一个类对象可以包含虚函数列表的入口地址不能包括静态成员属性因为静态成员属性是类的属性不是对象的属性成员函数定义的变量是局部变量类中虚函数成员函数的入口地址存在类的虚函数表中而不是对象本身。
9.
c中最小的编译单元是单个 .cpp 文件。
10.
使用 new 操作符可以动态分配全局堆中的内存资源。
一些情况下可以用free释放new但是不推荐。
用 new 申请的空间即使不调用 delete 释放空间当程序退出时也会被回收在大多数操作系统中当程序退出时操作系统会自动回收程序占用的内存资源包括由 new 运算符动态分配的内存空间。依赖程序退出时的内存回收会使得程序的资源管理不确定。在程序执行过程中如果动态分配了大量内存而没有及时释放可能会导致系统资源的浪费甚至是内存泄漏。
11.
函数重载的特点相同函数名不同参数列表返回类型不影响函数重载一个类中定义了两个同名且参数列表也相同的函数但其中一个是常成员函数也是函数重载一个类中定义了两个同名且参数列表也相同的函数但其中一个是静态成员函数。这不是函数重载静态成员函数属于类本身而非某个特定的对象实例。