c++学习 OOP部分
文章平均质量分 84
llllllillll
垃圾程序猿一枚
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Effective Modern C++ 笔记六: lambda 表达式
std::find_if(container.begin(), container.end(), [](int val){return 0 < val && val < 10;});闭包是lambda式创建的运行期对象,根据不同的捕获模式,闭包会持有数据的副本或引用。在上面,闭包就是作为第三个实参在运行期传递给std::find_if对象。闭包类就是实例化闭包的类。每个lambda式都会触发编译器生成一个独一无二的闭包类。而闭包中的语句会变成它的闭包类成员函数的可执.原创 2020-07-27 14:57:26 · 510 阅读 · 0 评论 -
Effective Modern C++ 笔记五: 右值引用,移动语义和完美转发
形参总是左值,即使其类型是右值引用void f(Widget&& w);w是个左值,即使它的型别是个指涉到Widget型别对象的右值引用。条款23:理解std::move和std::forwardstd::move无条件地将实参强制转换成右值。std::forward仅在某个特定条件满足时才执行同一个强制转换。template<typename T>typename remove_reference<T>::type&&am...原创 2020-07-24 14:39:26 · 466 阅读 · 0 评论 -
Effective Modern C++ 笔记四: 智能指针
条款18:使用std::unique_ptr管理具备专属所有权的资源std::unique_ptr实现的是专属所有权语义。为只移动型别。可以自定义析构器:auto delInvmt1 = [](Investment* pInvestment){makeLogEntry(pInvestment); delete pInvestment;};template<typename... Ts>std::unique_ptr<Investment, decltype(delInv原创 2020-07-23 15:10:04 · 435 阅读 · 0 评论 -
Effective Modern C++ 笔记三: 转向现代c++
条款7:在创建对象时注意区分()和{}std::vector<int> v{ 1, 3, 5};//v的初始元素为1,3,5//class Widget{ private: int x{0}; int y = 0; int z(0);//不可行};//对于不可复制的对象 例如std::atomic 却不能用=初始化由此可见,在c++三种初始化表达式中,只有大括号适用于所有场合。大括号初始化有一项新特性,它.原创 2020-07-22 18:08:04 · 502 阅读 · 0 评论 -
Effective Modern C++ 笔记二: auto
条款5:优先选用auto,而非显式型别声明简化声明auto defefLess = [](const auto& p1, const auto& p2) {return *p1 < *p2; };引入:std::function这个是函数指针的一种推广,可以指涉任何可调用对象。若要创建一个std::function对象就必须指定欲指涉的函数的型别。例如:bool(const std::unique_ptr<widget>&, cons原创 2020-07-21 14:17:23 · 486 阅读 · 0 评论 -
Effective Modern C++ 笔记一: 型别推导
读书笔记,外加一些自己测试的栗子。这本书讲了一些11 和 14的特性。条款一:理解模板型别推导形如:template<typename T>void f(ParamType param);f(expr); //从expr来推导T和ParamType的型别情况一:ParamType是个指针或引用,但不是个万能引用1.若expr具有引用型别,先将引用部分忽略。2.再进行模式匹配。情况二: ParamType是个万能引用1.如果expr是...原创 2020-07-20 17:17:23 · 468 阅读 · 0 评论 -
More Effective C 学习笔记六: 杂项
1.在未来时态下开发程序用c++语言来表达设计上的约束条件,而不是使用注释或者文档。 注意虚析构函数 等等2.将非尾端类设计为抽象类3.如何在同一程序中混合使用c++和c确保产生兼容的obj文件 名变换因为c没有函数重载,所以没有名称变换,所有需要显示告诉c++编译器不能对其他语言的函数进行名称变换,使用 extern 'C'指示。不仅仅指示c语言,通过只...原创 2020-03-10 13:38:15 · 390 阅读 · 0 评论 -
More Effective C 学习笔记 五:技巧
1.将构造函数和非成员函数虚拟化·考虑class NewsLetter{public: NewsLetter(istream& str); ...private: static NLComponent* readComponet(istream& str);private: list<NLComponent*> com...原创 2020-03-10 11:36:18 · 332 阅读 · 0 评论 -
More Effective C 学习笔记四: 效率
1.理解80-20准则2.考虑使用懒惰计算法引用计数 例如string类做法区别对待读取与写入懒惰提取 :pointer to implemention的设计思路懒惰表达式计算3.分期摊还期望的计算.提前计算分摊消耗 与上面是一种相反的思想,过度热情计算法比如说使用缓存(在计算比较频繁或者相同的操作重复进行的时候考虑).vector容器内存拓展逻辑4.理解...原创 2020-03-04 14:29:04 · 365 阅读 · 0 评论 -
More Effective c学习笔记三:异常
1.使用析构函数防止资源泄露考虑以下:void processAdoptions(istream& dataSource){ while(dataSource) { ALA *pa = readALA(dataSource); pa->processAdoption(); delete pa;...原创 2020-03-03 16:16:34 · 371 阅读 · 0 评论 -
More Effective C学习笔记二:运算符
5.谨慎定义类型转换函数允许编译器进行隐式转换的两种写法:单参构造函数 class Temple{ public: Temple(const string& c); //转换string 到 Name //Temple(int num1, int num2 = 2);//或着有默认值的形参,}拥有隐式类型转换运算...原创 2020-03-02 12:27:44 · 300 阅读 · 0 评论 -
More Effective C++ 学习笔记一:基础部分
1.指针和引用的区别任何时候都不能有指向空值的引用注意:char* p = 0;char& pp = * p;杜绝这种写法。1.引用应该被初始化,因为它肯定会被初始化,指针没有这样的限制,所以使用指针前往往要测试防止为空。2.指针可以被重新赋值指向另一个不同的对象,引用不能改变。注:重载操作符应该使用引用。(用户使用)2.尽量使用c++风格的类型转换...原创 2020-02-28 18:20:42 · 298 阅读 · 0 评论 -
Effective C++学习笔记九: 杂项讨论
五十三:Pay attention to compiler warnings.不要轻易忽视编译器地警告注:1.严肃对待编译器发出地警告信息。2.不能过度依赖编译器地警告能力。五十四:Familiarize yourself with the standard library,including TR1.让自己熟悉包括TR1在内地标准程序库。c++98列入c++标准程序库:...原创 2019-11-21 15:19:33 · 376 阅读 · 0 评论 -
Effective C++学习笔记六:继承与面向对象设计
三十二:Make sure public inheritance models "is-a"确定你的public继承塑模出Is-a关系注:public继承意味着is-a。适用于base classes身上的每一件事情一定也适用于derived classes身上,因为每一个derived class对象也都是一个base class对象。三十三:Avoid hiding inheri...原创 2019-11-20 15:31:54 · 309 阅读 · 0 评论 -
Effective C++学习笔记五:实现
二十六:Postpone variable definitions as long as possible. 尽可能延后变量定义式的出现时间。定义一个变量而其类型带有构造或者析构函数,那么程序的控制流到达这个变量定义式,就会有构造成本。所以延迟定义,在需要的时候去定义它。例子:std::string encryptPassword(const std::string& p...原创 2019-11-19 16:13:10 · 423 阅读 · 0 评论 -
Effect C++ 学习笔记四: 设计与声明
十八:Make interfaces easy to use correctly and hard to use incorrectly 让接口容易被正确使用,不易被误用以下:class Data{public: Data(int month, int day, int year); //..};这种类设计容易引起的客户错误:1.以错误的次序传递参数2.传递一...原创 2019-11-18 15:31:14 · 299 阅读 · 0 评论 -
Effect C++ 学习笔记三:资源管理
资源:内存,文件描述器,互斥锁,图形界面的字体和笔刷,数据库链接,socket等。十三:Use objects to manage resources. 以对象管理资源class Investment{...};Investment* createInvestment();void f(){ Investment* pInv = createInvestmen...原创 2019-11-14 15:50:51 · 574 阅读 · 0 评论 -
Effect C++学习笔记二:构造 析构 赋值运算
五:Know what functions C++ silently writes and calls了解C++默默编写并调用哪些函数class Empty{};class Empty{public: Empty() {} Empty(const Empty* rhs) {} ~Empty() {} Empty& operator=(const Empty&...原创 2019-11-14 11:45:02 · 373 阅读 · 0 评论 -
Effective C++ 学习笔记一:让自己习惯cpp
一:View C++ as a federation of languages; 视C++为一个语言联邦将c++视为由相关语言组成的联邦而非单一语言。理解其相关的次语言。1.C2.object-oriented C++3.Template C++4.STLc++高效编程守则视情况而变化,取决于你使用C++的哪一部分二:Prefer consts,enums,a...原创 2019-11-13 15:05:09 · 384 阅读 · 0 评论
分享