随笔分类 -  C/C++

摘要:1 #include <iostream> 2 3 using namespace std; 4 5 class A 6 { 7 protected: 8 int m_data; 9 10 public:11 A(int data = 0)12 {13 m_data = data;14 }15 int GetData()16 {17 return doGetData();18 }19 20 virtual int doGetData()21 {22 return m_d... 阅读全文
posted @ 2012-08-13 23:01 wolenski 阅读(883) 评论(0) 推荐(0)
摘要:写在前面的话:由于与C++语法相关的面试题,通常用很短的篇幅就能解释清楚,不适合写博客,因此本博客一直没有关注C++的语法题。近期发现篇幅短的C++题目刚好合适微博,于是开始在微博http://weibo.com/zhedahht和http://t.163.com/zhedahht上写C++的系列面试题。感兴趣的读者可以关注我的微博,或者直接围观面试题每日一题系列。同时,我也将不定期整理一些经典的C++面试题,发表到本博客上。题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能 阅读全文
posted @ 2012-08-11 22:56 wolenski 阅读(323) 评论(0) 推荐(0)
摘要:题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:12345678910111213141516则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。分析:第一次看到这个题目的时候,觉得这个题目很简单,完全不需要用到数据结构或者算法的知识,因此没有兴趣做这道题。后来听到包括Autodesk、EMC在内的多家公司在面试或者笔试里采用过这道题,于是想这么多家公司用它来检验一个程序员的编程功底总是有原因的,于是决定自己写一遍试一下。真正写一遍才发现,要完整写出这道题的代码,还真不是件容易的 阅读全文
posted @ 2012-08-11 20:51 wolenski 阅读(264) 评论(0) 推荐(0)
摘要:大一下学期遇到的问题,现在想起来把他搞明白………………--------------------------------------------------------------------------------------------------------------------------------这个是<stdio.h>中定义的scanf:_CRTIMP int __cdecl __MINGW_NOTHROW scanf (const char*, ...);这是scanf函数的一般形式(百度百科):scanf(格式控制,地址表列)int scanf(char *for 阅读全文
posted @ 2012-08-08 14:24 wolenski 阅读(944) 评论(0) 推荐(0)
摘要:题目:用C++设计一个不能被继承的类。分析:这是Adobe公司2007年校园招聘的最新笔试题。这道题除了考察应聘者的C++基本功底外,还能考察反应能力,是一道很好的题目。在Java中定义了关键字final,被final修饰的类不能被继承。但在C++中没有final这个关键字,要实现这个要求还是需要花费一些精力。首先想到的是在C++中,子类的构造函数会自动调用父类的构造函数。同样,子类的析构函数也会自动调用父类的析构函数。要想一个类不能被继承,我们只要把它的构造函数和析构函数都定义为私有函数。那么当一个类试图从它那继承的时候,必然会由于试图调用构造函数、析构函数而导致编译错误。可是这个类的构造函 阅读全文
posted @ 2012-08-06 15:58 wolenski 阅读(1035) 评论(0) 推荐(0)
摘要:问题:给出如下CMyString的声明,要求为该类型添加赋值运算符函数。class CMyString{public: CMyString(char* pData = NULL); CMyString(const CMyString& str); ~CMyString(void); private: char* m_pData;};当面试官要求应聘者定义一个复制运算符函数时,他会关注如下几点:·是否把返回值的类型声明为该类型的引用,并在函数结束前返回实例自身(即*this)的引用?只有返回一个引用,才可以允许连续赋值。否则如果函数的返回值是void,假设有三个... 阅读全文
posted @ 2012-08-06 15:19 wolenski 阅读(493) 评论(0) 推荐(0)
摘要:题目:输入一个表示整数的字符串,把该字符串转换成整数并输出。例如输入字符串"345",则输出整数345。分析:这道题尽管不是很难,学过C/C++语言一般都能实现基本功能,但不同程序员就这道题写出的代码有很大区别,可以说这道题能够很好地反应出程序员的思维和编程习惯,因此已经被包括微软在内的多家公司用作面试题。建议读者在往下看之前自己先编写代码,再比较自己写的代码和下面的参考代码有哪些不同。首先我们分析如何完成基本功能,即如何把表示整数的字符串正确地转换成整数。还是以"345"作为例子。当我们扫描到字符串的第一个字符'3'时,我们不知道后面还 阅读全文
posted @ 2012-07-10 21:28 wolenski 阅读(377) 评论(0) 推荐(0)
摘要:题目:下面是一个数组类的声明与实现。请分析这个类有什么问题,并针对存在的问题提出几种解决方案。 1 template<typename T> class Array 2 { 3 public: 4 Array(unsigned arraySize):data(0), size(arraySize) 5 { 6 if(size > 0) 7 data = new T[size]; 8 } 9 10 ~Array()11 {12 if(data) dele... 阅读全文
posted @ 2012-07-10 10:16 wolenski 阅读(691) 评论(0) 推荐(0)
摘要:问题(1):运行如下的C++代码,输出是什么? 1 class A 2 { 3 public: 4 virtual void Fun(int number = 10) 5 { 6 std::cout << "A::Fun with number " << number; 7 } 8 }; 9 10 class B: public A11 {12 public:13 virtual void Fun(int number = 20)14 {15 std::cout << "B::Fun with number " < 阅读全文
posted @ 2012-07-04 15:48 wolenski 阅读(208) 评论(0) 推荐(0)
摘要:运行下图中的C++代码,打印出的结果是什么? 1 bool Fun1(char* str) 2 { 3 printf("%s\n", str); 4 return false; 5 } 6 7 bool Fun2(char* str) 8 { 9 10 printf("%s\n", str);11 return true;12 }13 14 int _tmain(int argc, _TCHAR* argv[])15 {16 17 bool res1, res2;18 19 res1 = (Fun1("a") && F 阅读全文
posted @ 2012-07-01 16:56 wolenski 阅读(509) 评论(0) 推荐(0)