
C艹
sdau_09j1_xcy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
c++ string、UTF8互相转换方法
c++ string、UTF8相互转换方法 普通sting类型 转UTF-8编码格式字符串 std::string ofDewarServer::string_To_UTF8(const std::string & str) { int nwLen = ::MultiByteToWideChar(CP_ACP, 0, str.c_str(), -1, NULL, 0); wc...2016-07-11 18:51:33 · 2763 阅读 · 0 评论 -
《Effective C艹》读书笔记(11)
条款16:成对使用new和delete时要采取相同的形式 这个条款非常好理解。也就是说,当用new申请资源的时候,要用delete删除,当用new xxx = new XXX[]形式申请资源的时候,要用delete[]删除。 但有时候我们会写出下述的代码 typedef string AddressLines[4]; string *pal = new Addres...2015-09-12 21:24:28 · 100 阅读 · 0 评论 -
《Effective C艹》读书笔记(12)
条款十八:让接口容易被正确使用,不易被误用 如果我们设计一个日期类,可能会写成如下的模样 class Date{ public: Date(int month, int day, int year); … }; 这个构造函数貌似没有问题,但是她却无法阻止用户输入错误的数据。比如用户可能会把Date(3,30,2015)写成Date(30,3,201...2015-09-13 20:25:34 · 158 阅读 · 0 评论 -
《Effective C艹》读书笔记(13)
条款20:宁以pass-by-reference-to-const替换pass-by-value 传递引用比起传递值的参数有一个明显的优势就是,传递引用并不会构造新的对象,从而避免了构造函数和析构函数的开销,提升函数效率。 传引用参数的时候,如果使用const引用,可以告诉接下来要使用函数的人,这个数据在函数中不会被改变。 pass-by-value还会造成对...2015-09-14 21:40:10 · 139 阅读 · 0 评论 -
《Effective C艹》读书笔记(14)
条款21:当必须返回对象时,别妄想返回其reference 并不是在任何情况下都可以通过传引用的方式返回值。看下面这段代码 const Rational& operator* (const Rational& r1, const Rational& r2){ Rational temp; temp.numerato...2015-09-15 20:25:53 · 122 阅读 · 0 评论 -
《Effective C艹》读书笔记(15)
条款22:将成员变量声明为private 作为学生党,经常在代码里把变量声明为public,在外部直接进行访问了事。这个条款告诉我们,这样做是非常不科学的。 1,private能够提供非常完善的权限控制,你可以直接控制一个变量是只读,还是可读可写,甚至是只写。而不是把使用这个类的各种权限全部公开。 2,private对数据进行了封装,减少了数据被外界访问的机会,方便...原创 2015-09-16 19:21:51 · 121 阅读 · 0 评论 -
《Effective C艹》读书笔记(16)
条款23:宁以non-member、non-friend替换member函数 一般我们相当然以为类中的成员函数更具封装性,而实际上并不是那么一回事,因为成员函数不仅可以访问private成员变量,也可以取用private函数、enums、typedefs等等。而非成员非友元函数能实现更大的封装性,因为它只能访问public函数。 将所有便利函数放在多个头文件内但隶属同一个命名空间,...2015-09-17 20:56:32 · 158 阅读 · 0 评论 -
《Effective C艹》读书笔记(18)
条款26:尽可能延后变量定义式的出现时间 在使用某个变量之前再去定义这个变量,而不是很早就定义这个变量。这样做主要有两个好处。首先,程序员在阅读代码时可以立刻找到他的定义,而不是要翻阅代码寻找定义。也可以避免在前面定义了变量却在后面忘记使用的情况。另一个原因是可以节省资源。 另外书中提到了在循环中定义变量的问题。 for(int i = 0;i<10;i++){ ...原创 2015-09-19 19:55:34 · 156 阅读 · 0 评论 -
《Effective C艹》读书笔记(19)
条款28:避免返回handles指向对象内部成分 先看代码 class data{ private: int a; public: int& getA(){ return a; } data(int n):a(n){} }; int main(){ data d(2); d.getA() = 1; ...原创 2015-09-21 21:24:34 · 143 阅读 · 0 评论 -
《Effective C艹》读书笔记(10)
条款14:在资源管理类中小心copy行为 修改了一下书中代码(参考http://www.cnblogs.com/jerry19880126/archive/2013/05/25/3098997.html) #include<iostream> #include<cstring> #include<cstdio> #include<me...原创 2015-09-11 22:00:30 · 130 阅读 · 0 评论 -
《Effective C艹》读书笔记(9)
条款13:以对象管理资源 这一个条款主要介绍了auto_ptr 和 shared_ptr。这是c++的两种智能指针类型。 对于一般在堆上分配的指针,我们需要在程序退出之前对其进行delete,否则就会造成内存泄漏。 base* ba = new base(); delete ba; 然而我们并不能保证每次都能正常的将生成在堆内的对象...2015-09-10 21:38:00 · 97 阅读 · 0 评论 -
《Effective C艹》读书笔记(1)
条款01:把C++当作一个语言联邦 c++不是简单的“添加了面向对象特性的c语言”。我们可以认为c++是由以下四个次语言组成的语言。 1,C语言: 说到底,c艹仍然是已c为基础的,区块,语句,预处理器,内置数据类型,统统来源于c语言。 2,面向对象c++:这一部分包含了 封装,继承,多态,等等面向对象编程语言最直观的特征。 3,Template c++:泛型编程。 4,S...2015-09-02 21:21:33 · 158 阅读 · 0 评论 -
《Effective C艹》读书笔记(2)
条款03:尽可能使用const 面对指针的时候,既可以指出指针自身,也指针所指向的事物,或者两者都是 const。 char str[] = "hello"; char* p = str; //指针不是const,字符串也不是const const char* p = str; //指针不是co...2015-09-03 22:00:30 · 124 阅读 · 0 评论 -
《Effective C艹》读书笔记(3)
条款04:确定对象被使用前已先被初始化 读取未初始化的值会导致程序发生不明确的行为。对于内置类型以外的其他任何类型,初始化的责任落在了构造函数身上。 在落实这个规则的时候要注意,不要混淆了赋值和初始化 。 class ca{ int a; }; class cb{ int a; string b; vector<...2015-09-04 20:50:25 · 133 阅读 · 0 评论 -
《Effective C艹》读书笔记(4)
条款05:了解c艹默默编写并调用了哪些函数 对于一个空类,如果你写下如下的代码 class empty{}; 其相当于这样的代码 class Empty{ Empty(){}; Empty(const Empty& a){}; ~Empty(){}; Empty& operator=(const Empt...原创 2015-09-05 19:35:38 · 124 阅读 · 0 评论 -
《Effective C艹》读书笔记(5)
条款07:为多态基类声明vitual析构函数 当一个类作为派生类的基类的身份出现的时候,我们应该将她的析构函数设为虚函数。 class base{ public: int a; vitual ~base(); } 如果没有将基类的析构函数设为虚函数,用基类指针删除一个派生类的对象的时候就会造成派生类派生出的部分没有删除,从而...2015-09-06 21:09:34 · 114 阅读 · 0 评论 -
《Effective C艹》读书笔记(6)
条款09:绝不在构造和析构过程中调用virtual函数 首先看下面一段代码,我们将在基类的构造函数中调用虚函数 #include<iostream> #include<cstring> #include<cstdio> using namespace std; class base{ public: base(){ ...2015-09-07 20:27:40 · 113 阅读 · 0 评论 -
《Effective C艹》读书笔记(7)
条款11:在operator= 中处理自我赋值 一个包含指针变量的类,我们在为其写赋值函数(深复制)的时候可能会这样写 class base{ public: int data; double* p; base& operator=(const base& a){ this->data = a.data; ...2015-09-08 22:16:06 · 107 阅读 · 0 评论 -
《Effective C艹》读书笔记(8)
条款12:复制对象时勿忘其每一个成分 对于一个简单的类的拷贝函数,我们可以这样写 class base{ public: int data; base& operator=(const base& a){ this->data = a.data; return *this; } }; ...2015-09-09 21:21:31 · 106 阅读 · 0 评论 -
C++挂起进程
Q_PID pi = compress_process.pid(); //挂起进程 SuspendThread(pi->hThread); Sleep(5000); //恢复进程 ResumeThread(pi->hThread);2016-12-23 19:33:30 · 2490 阅读 · 0 评论