摘要: 我们几乎总是希望用内联函数代替预处理器宏,但是有三个地方比较式适合使用预处理宏 (1)字符串定义 (2)字符串拼接 (3)标志粘贴 字符串拼接:#define DEBUG(X) cout<<#x"="<<x<<endl;//在这里字符串x和字符串=拼接在一起 上面的覅难以可以打印任何变量的值 标志粘 阅读全文
posted @ 2016-06-21 18:01 阿瞒123 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 《thinking in C++》page210 在c++中,宏的概念是作为内联函数(inline function)来实现的,而内联函数无论从那一个方面上说都是真正的函数,编译器会检测内联函数的参数类型,返回值等。唯一不同于普通函数的地方就是在适当的地方像宏一样展开。所以不需要调用开销(参数压栈, 阅读全文
posted @ 2016-06-21 16:37 阿瞒123 阅读(170) 评论(0) 推荐(0) 编辑
摘要: (1)我们知道函数的重载时根据函数的参数类型以及函数参数个数来重载的,不能用函数返回值来重载函数。但是有时候函数参数个数和函数参数类型重载函数会和默认参数发生冲突: (2)在类的成员函数里面,const成员函数和非const成员函数可以出现重载,这是因为在成员函数中,const是用来修饰const成 阅读全文
posted @ 2016-06-21 12:18 阿瞒123 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 我们知道类里面的const的成员函数一般是不允许改变类对象的,但是我们知道const 类型的指针是可以强制类型转出成非const指针的,同样的道理,this指针也可以被强制类型转换 虽然上述用法可以实现const成员函数改变const对象,但是这种用法是客户端程序员是非常不友好的,因为客户端程序员不 阅读全文
posted @ 2016-06-19 16:54 阿瞒123 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 2 IntelliSense: 没有与这些操作数匹配的 "<<" 运算符 操作数类型为: std::ostream << const std::string d:\programmer practice\thinking in c++\08\ConstInClass\ConstInClass\con 阅读全文
posted @ 2016-06-19 16:17 阿瞒123 阅读(426) 评论(0) 推荐(0) 编辑
摘要: 在c++中,类里面的成员变量不仅仅可以被const修饰,还可以被static const修饰,此时一个内建类型(如int ,char ,long等)的static const 可以看做是一个编译期间的常量,可以被用作数组下标 例如: 《thinking in c++》中page198:必须在stat 阅读全文
posted @ 2016-06-19 15:36 阿瞒123 阅读(1351) 评论(0) 推荐(0) 编辑
摘要: 类里面的成员变量可以用const修饰,在只用const不用static修饰的情况下,这种使用的限制比较多 (1)不能定义处初始化,必须在类的构造函数初始化列表里面初始化(虽然在vs中,可以在定义处初始化,但是这是不符合语法的,如果用g++编译器,就会出现明显的报错,不利于程序的移植) (2)cons 阅读全文
posted @ 2016-06-16 18:21 阿瞒123 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 如果返回值类型是reference 或者pointer,那么这是一定要是注意,函数调用完后,被返回的变量要仍然存在,不能被编译器撤销。 无论是fun1还是fun2中,返回的变量都是一个局部变量,也没有用static修饰,所以当fun1与fun2调用完成后,被返回的变量i就会被编译器撤销,也就是不再存 阅读全文
posted @ 2016-06-13 21:40 阿瞒123 阅读(1106) 评论(0) 推荐(0) 编辑
摘要: 1对内建类型来说,按值返回的是否为const,是无关紧要的,因为编译器已经不让它成为一个坐直,因为它总是一个值,而不是一个变量(thing in c++ page192) 2当处理用户自定义的类型时,按值返回常量是非常重要的,如果一个函数按值返回一个类对象为const时,那么这个返回值不能是一个左值 阅读全文
posted @ 2016-06-13 17:26 阿瞒123 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 如果包含上述语句,在编译时会出现警告,警告信息如下 虽然上述代码可以编译通过,我们也可以无视警告,但是如果有一行带入如下,就出在运行时出现段错误 如果代码改成如下代码就ok了 char cp[]="hello"; 这行代码,是先创建一个字符数组,然后把字面值拷贝到字符数组,此时是可以随便修改字符数组 阅读全文
posted @ 2016-06-10 17:46 阿瞒123 阅读(270) 评论(0) 推荐(0) 编辑