C++面试常考题目
- 发布:C++培训
- 来源:网络
- 时间:2015-06-03 11:59
- 分享到:
1.内联函数:声明加inline,编译就会直接把代码嵌入当内置函数。(一般规模小且频繁调用)
2.函数重载:函数名一样,参数不同,返回结果不同(体现多态性)
3.函数模板:
template<typename T>
T max(T a, T b,T c){
…
}
int i1=1,i2=2,i3=3,i;
i=max(i1,i2,i3);//自动替换T
4.指针使用:
int *x=3; (x存3的地址)
int y=3;
int *x;
x=&3;(x存3的地址)
交换的实例
void swap(int *p1,int *p2){
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
int *x1,*x2;
swap(x1,x2);//传入地址,虚实结合
( 不能写成swap(*x1,*x2))
如果是void swap(int &p1,int &p2),则调用int x=1,y=2; swap(x,y)
5.运算符重载:
声明:
Complex Complex::operator + (Complex &c2){
Complex c;
c.real=real+c2.real;
c.imag=imag+c2.imag;
return c;
}
c1+c2等效于:c1.operator+(c2)
. * :: sizeof ?: 不能重载
6.多重继承的二义性:
C继承了A和B(AB中都用display()函数)
c1.A::a=3; c1.A::display(); (以此来区分A和B,否则编译不通过)
7.虚基类:
A—>B class B:virtual public A{};
A—>C D继承B和C需要初始化ABC classD:public B,public C{D(int n);A(n),B(n),C(n)}
编译时构造函数只执行D中,BC忽略,保证虚基类A中数据不被多次初始化
调用方式和6一样
8.基类的意义(面向对象的意义:轮子与汽车)
1.轮子基类带来的规范
2.轮子基类带来的多样性定制(轮子厂只需设置花纹等)
3.轮子带来的高效,不用重复造轮子,只管造汽车
4.轮子技术的保密性
9.虚函数
A->B
A有3个参数 B有4个参数
A的指针先指A输出3个,再指B只能输出3个。
基类加了virtual声明的函数,继承后再调用时会自动根据对象进行重载,体现动态多态性
虚函数的意义:提供继承实现多态的。
10.抽象类:
用来作为基类派生的,定义一种规范。
纯虚函数,不初始化,让子类初始化。