12 2020 档案
摘要:站在对象模型的尖端 7.1Template Template的“实例化”行为 一个class object的定义会导致template class的“实例化”,但未被使用的member functions不应该被“实例化” 实例化具体时间不做要求,可在编译期也可在链接期。 对于编译器在它被一组实际参
阅读全文
摘要:执行期语意学 6.1对象的构造和析构 把object尽可能放在使用它的那个程序区段附近,这么做可以节省非必要的对象产生操作和摧毁操作 全局对象 相比C,C++会把所有的global objects都放置在程序的data segment中,如果显式指定一个值,该object将以该值为初值,否则置为0(
阅读全文
摘要:构造、析构、拷贝、语意学 纯虚函数的存在 可以定义和调用一个pure virtual function,不过只能被地调用。 pure virtual destructor必须定义它,因为每一个derived class destructor会被编译器扩张,以静态方式调用其“每一个virtual ba
阅读全文
摘要:Function语意学 static member functions不能直接存取nonstatic数据,不能被声明为const 4.1Member的各种调用方式 Nonstatic Member Functions(非静态成员函数) nonstatic member function至少必须和一般
阅读全文
摘要:Data语意学 class X{}; class Y : public virtual X{}; class Z : public virtual X{}; class A: public Y, public Z{}; 一个empty class如class X{},它有一个隐晦的1 byte,那是
阅读全文
摘要:构造函数语意学 explicit使得能够制止"单一参数的constructor"被当做conversion运算符 2.1 Default Constructor 的构造操作 default constructors在需要的时候被编译器产生出来,被谁需要?做什么事情? 程序需要时并不会合成一个defa
阅读全文
摘要:第一章 关于对象 C语言并不支持"数据和函数"间的关联,因此是程序性的,在C++中则可以以用"一个ADT(抽象数据类型)或class hierarchy的数据封装"来替代"C程序中程序性地使用全局数据",而且加上封装后并不必然增加布局成本,因为C++在布局以及存取时间上主要的额外负担是由virtua
阅读全文
摘要:1、仔细区别 pointers 和 references 当你知道你需要指向某个东西,而且绝不会改变指向其他东西,或是当你实现一个操作符而其语法需求无法由 pointers 达成,你就应该选择 references;任何其他时候,请采用 pointers 2、最好使用 C++ 转型操作符 stati
阅读全文
摘要:标注书中一些个人容易遗忘的知识点。由于本人是在阅读完C++ Primer后再阅读Effective C的,所以会补充一些从C Primer学到的C++11的特性(14、17暂不补充) 条款1:视 C++ 为一个语言联邦(C、Object-Oriented C++、Template C++、STL)
阅读全文
摘要:合集《C++ Primer第5版》 课后练习答案 - 丸子球球 - 博客园 (cnblogs.com) 练习19.1 void* operator new(size_t size) { if (void* mem = malloc(size)) return mem; else throw std:
阅读全文
摘要:合集《C++ Primer第5版》 课后练习答案 - 丸子球球 - 博客园 (cnblogs.com) 练习18.1 (a)range_error;(b)exception。throw p,此时抛出的为指向局部对象的指针 练习18.2 p的内存没有释放,导致内存泄露 练习18.3 使用类对象 cla
阅读全文
摘要:合集《C++ Primer第5版》 课后练习答案 - 丸子球球 - 博客园 (cnblogs.com) 练习17.1 int main(void) { std::tuple<int, int, int> nums(10, 20, 30); return 0; } 练习17.2 std::tuple<
阅读全文
摘要:合集《C++ Primer第5版》 课后练习答案 - 丸子球球 - 博客园 (cnblogs.com) 练习16.1 当编译器实例化一个模版时,它使用实际的模版实参来代替对应的模版参数来创建出模版的一个新"实例",这些编译器生成的版本通常被称为模板的实例 练习16.2 template<typena
阅读全文