随笔分类 - C++ primer plus 学习记录
一边学习一边总结的 C++ 知识点。
摘要:// 1 string(const char * s) // 2 string(size_type n, char c) // 3 string(const string & str) // 4 string() // 5 string(const char * s, size_type n) //
阅读全文
摘要:——不能创建对象,只能派生出新类的类是抽象基类ABC(作为模板)。 纯虚函数。 包含纯虚函数的类是抽象基类。 纯虚函数 纯虚函数声明:虚函数的结尾处加上=0。 C++通过使用纯虚函数提供未实现的函数,但仍可以在实现文件中提供方法的定义。 class BaseEllipse // abstract b
阅读全文
摘要:——C++访问类别除了private、public,还有protected。 对外部世界来说,保护成员的行为与私有 成员相似。 对于派生类来说,保护成员的行为与公有成员相似。 用于数据成员时的缺陷。 用于成员函数时的优点。 对外部世界。 关键字protected与private相似,在类外只能用公有
阅读全文
摘要:——编译器对非虚方法使用静态联编(编译时匹配),对虚方法使用动态联编(运行时匹配)。 未使用虚方法时,指针类型在编译时已知,因此编译器在编译时,可以将成员方法关联到相应的类,这被称为静态联编; 使用虚方法时,通常只有在运行程序时才能确定对象类型,所以编译器生成的代码在程序执行时将成员函数关联到相应的
阅读全文
摘要:——方法的行为应取决于调用该方法的对象。这种较复杂的行为称为多态——具有多种形态,即同一个方法的行为随上下文而异。 virtual实现了对象调用正确的方法或方法序列。 实现多态的两种机制: 在派生类中重新定义基类的方法(不会改变基类的方法)。 使用虚方法。 声明函数时若使用关键字virtual,则这
阅读全文
摘要:——派生类需要自己的构造函数。 派生类中可以根据需要添加额外的数据成员和成员函数,甚至可以给予继承的原成员函数新的定义。 基类指针或引用可指向派生对象,反过来则只能使用强制类型转换。 派生类对象可使用基类的非私有成员。 可使用派生对象初始化基类对象或赋值。 一般不允许将基类对象赋给派生类对象(上面第
阅读全文
摘要:——公有派生即public派生 1 class RatedPlayer : public TableTenisPlayer 2 { 3 ... 4 }; RatedPlayer派生自TableTenisPlayer 使用公有派生,基类的公有成员将成为派生类的公有成员;基类的私有部分也将成为派生类的一
阅读全文
摘要:从一个类派生出另一个类时,原始类称为基类,继承类称为派生类。 如运动员类派生出乒乓球运动员类,前者为基类,后者为派生类,乒乓球运动员继承了运动员的全部特征。
阅读全文
摘要:通常,类库是以源代码的形式提供的,这意味着可以对其进行修改,以满足需求。 类继承,不用修改源码,能够从已有的类派生出新的类,而派生类继承了原有类(称为基类)的特征,包括方法。 继承机制只需提供新特性,甚至不需要访问源代码就可以派生出类。
阅读全文
摘要:class Queue { private: Queue(const Queue & q) : qsize(0) {} // preemptive definition 伪私有方法 Queue & operator = (const Queue & q) { return *this; } // p
阅读全文
摘要:如果new无法创建新节点,它将引发异常,最终的结果是,除非提供了处理异常的代码,否则程序将终止
阅读全文
摘要:——调用构造函数时,对象将在括号中的代码执行前被创建,因此无法在括号内初始化对象的常量成员。 Queue::Queue(int qs) { front = rear = NULL; items = 0; qsize =qs; // not acceptable! qsize是一个常量成员 } 因此C
阅读全文
摘要:——C++的一项特性是在类中嵌套结构或类声明 在类声明中声明的结构、类或枚举被称为是被嵌套在类中,其作用域为整个类。这种声明不会创建数据对象,而只是指定了可以在类中使用的类型。 class Queue { struct Node { Item item; struct Node * next; };
阅读全文
摘要:——不注意时,重载operator+()会造成一个奇异的属性: net = force1 + force2; // 1: three Vector objects 然而,还可以这样用: force1 + force2 = net; // 2: dyslectic programming cout<<
阅读全文
摘要:——返回引用而不是返回对象,这将避免使用复制构造函数,从而提高效率 返回对象的引用: 引用指向的对象应该在调用函数执行时存在,或位于堆(new)中 返回const引用: 若形参是const引用,且返回传入的对象的引用,那么只能返回对象的const引用 返回非const的引用: 两种常见情形:重载赋值
阅读全文
摘要:默认的逐成员复制和赋值行为(复制构造函数、赋值运算符)有一定的智能。如将一个Magazine对象复制或赋值给另一个Magazine对象,逐成员复制将使用成员定义的复制构造函数和赋值运算符。 如果Magazine类因为其它成员需要定义复制构造函数和赋值运算符,这些函数就必须显示地调用对象成员的复制构造
阅读全文
摘要:与new相关: https://www.cnblogs.com/suui90/p/13126652.html 其它: 对不是使用new初始化的指针使用delete时,结果将是不确定的,并可能是有害的
阅读全文
摘要:如果在构造函数中使用new来初始化指针成员,则应在析构函数中使用delete new和delete必须相互兼容。new对应于delete,new[]对应于delete[] 如果有多个构造函数,则必须以相同的方式使用new,要么都带中括号,要么都不带。因为只有一个析构函数,所有的构造函数都必须与它兼容
阅读全文
摘要:——可以将成员函数声明为静态的(函数声明必须包含关键字static,但如果函数定义是独立的,则其中不能包含关键字static) 调用: 不能通过对象调用(包括this指针) 公有部分声明的,可以使用类名和作用域解析运算符调用: int count = String::HowMany(); // in
阅读全文
摘要:C++98: 字面值0表示空指针(另一个含义表示数字0);可使用(void*)0来标识空指针,还可使用NULL(表示空指针的C语言宏) C++11: ——引入关键字nullptr 以表示空指针 仍可像以前一样使用0(兼容) 兼容delete[]: delete[]与使用new[]初始化的指针和空指针
阅读全文
浙公网安备 33010602011771号