C/C++笔试题(4)

1.下面的代码有什么问题?

struct Test  
{  
	Test(int ) { }  
	Test() { }  
	void fun() { }  
}; 


int main(int argc, char* argv[])
{
	Test a(1);  
	a.fun();  
	Test b();  
	b.fun(); 

	system("pause");
	return 0;
}
编译不能通过,Test b();错误,不用加括号,Test b;就可以了。


2.下面代码有什么问题?

cout<< (true?1:"0") <<endl; 
编译出错,这个三元操作符(也是C++中唯一的三元操作符)?后面的两个变量的类型要一样。


3.C++中的空类,默认产生哪些类成员函数?

class Empty

{

  public:

  Empty(); // 缺省构造函数

  Empty( const Empty& ); // 拷贝构造函数

  ~Empty(); // 析构函数

  Empty& operator=( const Empty& ); // 赋值运算符

  Empty* operator&(); // 取址运算符

  const Empty* operator&() const; // 取址运算符 const

};

但是要注意的是,这些函数只是在需要时才会产生。

如何查看类生成了那些函数?汇编吗?


4.C++中overload、override、overwrite的区别  

    重载(overload)是指同一个类中,名称相同,但是参数不同的相似的函数

    覆写(override)是指子类中实现了父类中virtual函数的重新定义

    重写(overwrite)感觉不是C++中的概念,貌似是JAVA中的。与覆写类似,可认为是覆写父类中非virtual函数


5.定义函数指针数组

    定义一个有10个指针的数组,每个指针指向一个函数,该函数有两个长整型形参并返回 一个整数。

    int (*pf[10])(long int a, long int b);

    复习下函数指针的概念,并引经新的概念---函数指针 数组。

     学习新的知识时,最好能和以前的知识产生联系,这样能巩固以前的知识,也更便于学新的知识。

     函数指针就是指向函数的指针,就像指向整数的指针一样,表示某一个函数的地址(函数就是一段代码,当然也得有一个地址)。定义方法如下:

     int (*pf)(int a, int b); //函数的形参和返回值都可以换。注意包裹*pf的小括号不能去掉,去掉之后,语句就变为定义一个函数了,它的返回值为int型指针。

     下面就来说说函数指针数组。函数指针数组就一个装着函数指针的数组,当然函数指针的类型要一致。定义方式如下:

      double add(double a, double b);

      double sub(double a, double b);

      double mul(double a, double b);

      double div(double a, double b);

      double (*szpf[4])(double a, double b);    //函数指针数组的定义


       当然还有另外一种定义方式,如下:

       typedef double (*szpf[])(double a, double b); 

       szpf pfs = {add, sub, mul, div};


       还可以这样:

       typedef double (*szpf)(double a, double b); 

       szpf pfs[10];


       函数指针的用途举例:http://wenku.baidu.com/view/e2fce2e0998fcc22bcd10ded.html


又去stackoverflow上看了下,发现了指向指针函数数组的指针的定义方法,如下:

       double (*(*ppFunction)[4])(double a, double b);


6. 

      

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值