05 2023 档案
编译器绕过拷贝构造函数和返回值优化
摘要:写在前面: 在拷贝初始化(也就是用等号初始化,注意使用拷贝构造函数创建一个新的对象不属于拷贝初始化)过程中,编译器可以(但不是必须)跳过拷贝构造函数或者移动构造函数,直接创建对象。 1 string null_book="999"; 2 //可以改写为 3 string null_book("999
阅读全文
默认构造函数的作用
摘要:类中有其他构造函数的时候最好定义默认构造,或则利用default关键字将其变成合成默认构造。 class Phone { public: Phone(std::string name) { name_ = name; } std::string name_; }; class Person { pu
阅读全文
委托构造函数
摘要:一. 当构造受委托的构造函数时,受委托的构造函数函数体会执行而委托构造函数函数体不会执行; class Person { public: Person() { cout << "这是一个无参构造" << endl; } Person(const Person& p) { cout << "这是一个拷
阅读全文
C++ 无法引用 的默认构造函数 -- 它是已删除的函数
摘要:类中含有const或引用类型成员变量时不能使用合成默认构造函数,只能使用默认构造函数并且给它们赋予初值。
阅读全文
作用域运算符
摘要:目前已经学过了作用域运算符的三个作用 1.调用类中静态成员函数 class Person { public: static int m_person; }; int main() { Person::m_person; } 2.类内用typedef或则using起类型别名,在类外使用该类型别名时:
阅读全文
类和对象的基本概念
摘要:封装: 属性和行为作为一个整体,来表现各种事物。 将属性和行为加以权限控制(private,public,protected) 一些术语: 属性(成员属性,成员变量),行为(成员函数,成员方法);统称为成员。 实例化(通过一个类,创建一个对象的过程) 注意我们可以创建一个指向类的指针或则引用,但这不
阅读全文
函数指针
摘要:函数指针的作用是:一个函数有一部分代码不确定,可以将这个不确定的代码写入另外一个函数供这个函数调用,另外一个函数称为回调函数,和调用其他对象不同的是,回调函数直接将自己的代码嵌入到调用点处。 注意,函数的形参不可以是函数,但可以是函数的指针 当回调函数有参数需要传入的时候可以这样写: 1 void
阅读全文
数组与vector容器
摘要:数组存放在栈区,vector容器存放在堆区 定长容量较小时使用数组,此时数组性能较好,变长容量较大或则不确定容量时使用容器 常常习惯用迭代器来访问vector而非下标,但是当vector为二维时最好用下标来访问,因为这样可以自由的访问每个元素,而迭代器只能一行一行的访问。比如牛客的这道题:显然用下标
阅读全文