上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页
摘要: 出现问题的场景:例如a[i]=a[j]当i=j时,或者*pb=*pa当pa和pb指向同一个对象时。 考虑自我赋值问题,则需要将this和rhs进行判等,但带来巨大开销;考虑异常安全问题,可以先备份原本的成员变量,再令原本的成员变量指向新的副本,最后return *this(如果在做副本时(使用不带n 阅读全文
posted @ 2022-10-07 16:53 ijpq 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 写这段代码时: int x,y,z; x = y = z = 10; 实际上operator+返回的是左值引用,以保证x=y=z=10实际上是x=(y=(z=10)); 阅读全文
posted @ 2022-10-07 16:05 ijpq 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 在derived对象的base构造期间,对象类型是base,而不是derived。对象只有在derived构造之后才会成为derived 第1条的解决方法,是将构造、析构中的virtual改为non-virtual。然后把derived的信息传给base构造所调用的non-virtual (想想之前 阅读全文
posted @ 2022-10-07 16:00 ijpq 阅读(14) 评论(0) 推荐(0) 编辑
摘要: 如果析构函数调用的函数会抛出异常,则析构函数可以捕获这个异常并且吞掉它,并且继续执行析构过程。 阅读全文
posted @ 2022-10-07 15:22 ijpq 阅读(13) 评论(0) 推荐(0) 编辑
摘要: 如果基类的析构是non-virtual的,在使用base class指针指向一个derived对象,并且这个对象由base class指针删除时,derived对象的成分并没有被删除,原因是base class定义了一个non virtual析构(因此无法动态绑定)。所以目前看解决方法就是把这个ba 阅读全文
posted @ 2022-10-04 12:43 ijpq 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 在c++11标准中已经被=delete代替。 阅读全文
posted @ 2022-10-03 18:59 ijpq 阅读(20) 评论(0) 推荐(0) 编辑
摘要: .gitmodules 文件。 该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射 如果给 git clone 命令传递 --recurse-submodules 选项,它就会自动初始化并更新仓库中的每一个子模块, 包括可能存在的嵌套子模块。 如果你已经克隆了项目但忘记了 --recurs 阅读全文
posted @ 2022-09-30 13:57 ijpq 阅读(40) 评论(0) 推荐(0) 编辑
摘要: #include <stdio.h> #include <iostream> #define MACRO(x,y,cb) \ { \ printf("%s, %s\n",(x), (y)); \ (cb); \ } int func( ) { std::cout << "calling func" 阅读全文
posted @ 2022-09-30 12:20 ijpq 阅读(30) 评论(0) 推荐(0) 编辑
摘要: https://learn.microsoft.com/zh-cn/cpp/cpp/lvalues-and-rvalues-visual-cpp?view=msvc-170 https://learn.microsoft.com/zh-cn/cpp/cpp/temporary-objects?vie 阅读全文
posted @ 2022-09-29 16:30 ijpq 阅读(15) 评论(0) 推荐(0) 编辑
摘要: 一个类,如果没有声明构造,编译器会声明:default构造。编译器还会声明copy构造、copy赋值、析构(如果自己没有声明) 编译器声明版本的copy构造、copy赋值 将每一个non static成员拷贝到目标对象。 含有引用成员、const成员的,编译器版本的copy拒绝生成。因为引用不能修改 阅读全文
posted @ 2022-09-25 22:04 ijpq 阅读(18) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 13 下一页