2011年8月17日

全局变量可不可以定义在可被多个.C文件包含的头文件中?

摘要: 全局变量可不可以定义在可被多个.C文件包含的头文件中?答案:可以,在不同的C文中中以static形式来声明同名的全局变量,可以在布偶年该的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错!建议不要在头文件中定义变量,头文件中只做变量的声明!为什么要声明为static的原因如下:1》每个.c文件,会编译成一个obj,这样,如果你在头文件中定义,而不是声明,那么每个引用这个头文件的obj中都会有一个这个变量的实例,连接的时候就会报重复定义出错了。2》static变量的作用域只在该编译单元内有效 阅读全文

posted @ 2011-08-17 22:00 原来... 阅读(6979) 评论(0) 推荐(1)

(inline)内联函数不能为虚函数的原因(virtual)

摘要: 1.内联函数是个静态行为,而虚函数是个动态行为,他们之间是有矛盾的。2.我们之所以能看到一些象内联函数的虚函数,是因为某个函数是否是内联函数不是由我们说的算,而是由编译器决定的。我们只能向编译器建议,某个函数可以是内联函数(inline关键字),但是编译器有自己的判断法则。所以可能出现这样的情况: 2.1 我们用inline声明的函数却没有inline 2.2 我们没有用inline声明的函数却是inline 2.3 对于inline函数,编译器仍然将它编译成一个有地址的函数所以,情况比较复杂,从high-level来看的话很难判断函数是否是inline的,如果从low-level来看的话就比 阅读全文

posted @ 2011-08-17 21:26 原来... 阅读(5696) 评论(0) 推荐(0)

如何使 类的成员函数作为回调函数

摘要: 如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过。其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而实现程序函数可以访问C++的数据成员。这也可以理解为什么C++类的多个实例可以共享成员函数却-有不同的数据成员。由于this指针的作用,使得将一个CALL-BACK型的成员函数作为回调函数安装时就会因为隐含的this指针使得函数参数个数不匹配,从而导致回调函数安装失败。要解决这一问题的关键就是不让this指针起作用,通过采用以下两种典型技术可以解决在C++中使用回调函数所遇到的问题。这种方法具有通用 阅读全文

posted @ 2011-08-17 20:54 原来... 阅读(13944) 评论(2) 推荐(3)

sony面试题(输出* .这样的字符)

摘要: 输出如图所示的图像的程序如下:(这是一道sony的面试题)#include<iostream>using namespace std;void dian(int n){while(n--){cout<<".";}}void xing(){cout<<"*";}int main(){cout<<"输入你需要输出的行数:"<<endl;int line;cin>>line;for(int i=1;i<=line;i++){int j=i;while(j--){x 阅读全文

posted @ 2011-08-17 18:44 原来... 阅读(396) 评论(0) 推荐(0)

12个球问题(转)

摘要: 节选自:http://www.cnblogs.com/hlxs/archive/2011/08/17/2142820.html有十二个乒乓球形状、大小相同,其中只有一个重量与其它十一个不同,现在要求用一部没有砝码的天秤称三次,将那个重量异常的球找出来,并且知道它比其它十一个球较重还是较轻。一:天平两边先各6个球由于两边的重量肯定不等,不用称都知道天平肯定不能平衡,白白浪费一次,难道你自认为牛B到用2次就能得出结论,显然你不会这样认为,排除。二:天平两边先各5个球 如果天平不平衡,特殊的球可能在左边,也可能在右边,左边和右边个称一次,你得不出答案,但你却用了三次机会,Game Over。三:天平 阅读全文

posted @ 2011-08-17 13:17 原来... 阅读(477) 评论(0) 推荐(0)

怎么能够在异常出现的情况下也能够释放堆内存资源?--------------智能指针 try-finally

摘要: 对于出现异常时,不能释放堆内存的问题:例如:#include <iostream> 02using namespace std; 03class normal_pointer_example 04{ 05public: 06normal_pointer_example(){cout<<"构造函数执行!\n";} 07~normal_pointer_example(){cout<<"析构函数执行!\n";} 08}; 09class normal_pointer_wrong{};//normal_pointer_wron 阅读全文

posted @ 2011-08-17 11:49 原来... 阅读(620) 评论(0) 推荐(0)

error C2713: Only one form of exception handling permitted per function

摘要: error C2713: Only one form of exception handling permitted per function错误的我的处理方式:(C++)当我在一个函数中同时使用try-catch try-finally的嵌套使用时,会提示上面的错误,错误的意思大概是,不允许在一个函数中出现两种异常的处理方式,我想是不是不能嵌套使用啊,于是我就在一个函数中同时使用这两个,但是不嵌套使用了,错误依然是上面的。现在我没办法了,只能在不在一个函数中同时使用了,我就用了一种折中的方案,即把这两种异常处理方式,分别在两个函数中实现,然后让另一个函数调用其中的一个函数。我们还可以让一个异 阅读全文

posted @ 2011-08-17 11:40 原来... 阅读(653) 评论(0) 推荐(0)

导航