汕头h5模板建站,淘宝联盟网站建设不完整,有了源码怎么做软件,wordpress怎么清空怎么分辨const修饰的是谁 是限定谁不能被改变的#xff1f; 在C中#xff0c;const关键字的用途和位置非常关键#xff0c;它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象#xff0c;并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们… 怎么分辨const修饰的是谁 是限定谁不能被改变的 在C中const关键字的用途和位置非常关键它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们明确代码中哪些部分不能被改变
const修饰普通类型变量修饰的变量的值不能被改变。const int* ptr ptr指向的值不能被改变int* const ptr ptr指向的地址不能别改变 指向地址的值可以被改变 引用的底层原理const int* const ptr ptr指向的地址和地址存储的值都不能被改变 const int ptr 常量引用 本来就不能改变引用指向 const修饰后引用的值也不能被改变
const的实际作用取决于它在声明中的位置。
两种在vector中删除元素的方法
1. std::remove erase
nodes.erase(remove(nodes.begin(), nodes.end(), node), nodes.end());这个方法是先通过remove先把k个与node匹配的元素移动到vector的最后 然后实现O(k)时间复杂度的删除操作。适合当数组中存在多个与node相匹配的元素时候使用。
2. std::find erase
auto it find(nodes.begin(), nodes.end(), node);
if (it ! nodes.end()) {nodes.erase(it);
}这个方法是通过find找到一个和node匹配的元素的迭代器然后直接通过迭代器删除这个元素总体是O(n)的时间复杂度比较适合当数组中的元素是唯一的时候使用。
Map和unorderedMap的区别 C类的大小由什么决定
成员变量的大小普通成员变量数组成员变量虚函数表和虚函数如果类中定义了一个虚函数那么他会有一个虚函数表类中会存储一个指向虚函数表的指针虚函数表中存储指向虚函数的指针继承关系如果子类继承了一个基类那么子类会继承父类的成员变量和虚函数如果父类有虚函数子类会继承父类的虚函数指针。对齐类中的成员变量会根据其类型要求进行内存对齐为了满足对齐要求编译器会在成员之间填充字节来满足对齐要求。
为什么C语言不能重载C可以 C语言缺少C中的名称修饰机制C语言的编译器无法分辨参数列表不同的同名函数如果定义多个参数列表不同的同名函数在调用函数的时候C语言的编译器无法分辨要调用的函数是哪个会导致二义性。
函数重写和函数隐藏 函数重写子类重写父类的虚函数必须是虚函数只有参数列表不同。创建一个父类指针指向子类对象就可以通过指针指向的对象来调用子类重写的虚函数。 函数隐藏如果参数列表相同是函数重写如果函数同名但是参数列表不同就是函数隐藏 子类指针可以调用父类函数吗 子类指针可以调用父类函数前提是子类没有隐藏该函数。如果子类没有隐藏父类的函数即子类中没有定义同名但参数不同的函数那么子类指针可以调用父类中的虚函数如果该函数在父类中是虚拟的。 如果要调用的父类虚函数已经被子类重写了子类指针调用这个虚函数是会默认调用子类中重写后的函数如果想调用父类的重写之前的函数可以通过子类中的函数来使用作用域解析符来间接调用父类被重写的函数。
让类只能在栈或者堆上创建对象
只能在栈上创建对象 // 禁止堆上分配删除 operator newvoid* operator new(std::size_t size) delete;
// 禁止堆上删除删除 operator deletevoid operator delete(void* pointer) delete; 但事实上这种方法并不能实现限制类只能在栈上创建对象的目的因为还可以通过 :: 全局作用域解析符来使用全局的new
只能在堆上创建对象 把析构函数设置为私有由于创建在栈上的对象是由编译器自动分配和释放内存空间的当在栈上创建对象时编译器会检查类的析构函数是否可用如果不可用则编译器不会在栈上为对象分配空间。
声明和定义的对比 如何阻止类创建对象
将构造函数私有化或者删除构造函数将类设置为抽象类禁止拷贝构造和赋值操作符
为什么抽象类不能实例化
抽象类不能实例化的原因是它包含至少一个纯虚函数这使得它成为一个不完整的类。抽象类的设计目的是提供接口或基础实现而具体的行为和实现应由派生类提供。抽象类可以被派生类继承并在派生类中实现纯虚函数从而允许派生类的实例化。
C的成员函数能调用this指针吗 成员函数可以使用 this 指针。this 指针是一个指向调用该成员函数的对象的指针。
什么是野指针、悬空指针、空指针
空指针在C语言中用NULL来表示空指针void*0C中的空指针是nullptr 代表0