⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++面试题-1.txt

📁 C++面试试题荟萃 网上搜集的一些C++面试试题 有兴趣的朋友可以看看的
💻 TXT
字号:
1、	下面的程序是否有错误,如果有错,请说明原因。
char* const pszHelp = "hello";
pszHelp[0] = 'a';

因为pszHelp指向一个常量字符串,所以根本不允许修改字符串内容。除非使用一个字符数组。

2、	const用法:
const char* p
		p是一字符串指针,该指针指向的内容是常量,指针指向的内容不能被修改
char const* p
		同上
char* const p
		p是一字符串指针,该指针是常量指针,指针不能被修改

3、	什么是抽象类
包含抽象函数的类是抽象类,满足virtual fun() = 0; 的语法的函数是抽象函数。主要用于提供接口,如同Java中的Interface。

4、	什么时候需要使用虚拟析构函数
一般情况下类的析构函数都定义成虚函数,主要是考虑在使用基类指针操作派生类对象时保证类的析构顺序。

5、	请指出下面代码存在的潜在问题
class CC {
	int* m_pCount;
public:
	void clear() { if ( m_pCount ) delete m_pCount; }
	CC() { m_pCount = new int; }
	~CC() { clear(); }
}

主要存在的问题是clear函数在delete m_pCount;后并没有置指针为空(m_pCount = NULL),这样当第二次调用 clear 时,会出现问题。

6、	如何定义禁止实例化的纯抽象基类
这个问题很奇怪,抽象类本身就不能被实例化,在程序编译时就会提示出错。

7、	在进行私有继承时,如何修改基类成员的存取权限
定义一个指向该基类的友元函数,就可以绕过私有继承操作基类成员。

8、	如何定义一个指向类的成员函数的指针
void (CC::*bfpClear)() = &CC::clear;

9、	类A派生类B和C,类D从类B、C派生,如何将一个类A的指针指向一个类D的指针
直接使用即可,主要是考察运行时多态的概念。本题和题4要一起考虑。

10、	请说出程序运行的结果
class A {
public:
	virtual void func() { cout << "I am in base" << endl; };
}
class B : public A {
		public:
	virtual void func() { cout << "I am in derived" << endl; }
}
void main() 
{
	B* bb = new B;
	bb->func();
	A* aa = (A*)bb;
	aa->func();
	….
}
	I am in derived
	I am in derived
	主要考察虚函数的使用

11、	分析下面代码,指出问题
int* func() { int i =0 ;  return &i; }
	返回的是一个局部简单类型变量地址,程序可能会出错,而且返回的指针不能采用delete进行删除。
class CObject;
CObject* funobj() { CObject obj; …. return &obj; }
	返回的是一个局部CObject类型变量地址,程序会出错,而且返回的指针不能采用delete进行删除。
CString funobj() { CString strTemp = _T("temp"); return strTemp; }
	不会出错,返回的CString会调用CString的拷贝构造函数返回。

12、	Debug版本中经常使用ASSERT进行断言,在Release版本中有一个起同样作用的函数,请说明。
VERIFY,而且要注意ASSERT中的语句在Release版本中会忽略。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -