1.C++中的参数传递机制:值传递、指针传递、引用传递

2.C++的内部类和外部类:

一个讲得不错的博客,不过不让转载:C++内部类

3.static 可以修饰局部变量、全局变量和函数。 不可修饰类!

4.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是:出错!友元函数不是成员函数,必须要有参数。

5.以下代码的输出结果是?

main() {
char str[]="S\065AB";
printf("\n%d", sizeof(str));
}

答:5    \065是一个8进制数字

6.下面这段代码会打印出什么?

class A
{
public:
    A()
    {
        printf("A ");
    }
    /*virtual*/
    ~A()
    {
        printf("deA ");
    }
};
 
class B
{
public:
    B()
    {
        printf("B ");
    }
    ~B()
    {
        printf("deB ");
    }
};
 
class C: public A, public B
{
public:
    C()
    {
        printf("C ");
    }
    ~C()
    {
        printf("deC ");
    }
};
int main()
{
    A *a = new C();
    delete a;
    return 0;
}
 
答:

A B C deA 
构造函数的执行先执行父类,再执行子类。析构顺序想反
A B的析构函数不是虚函数,所以不会执行子类的虚函数
 
 
7. Java, Object-C, C#都是类C语言, python不是
 
8.
在linux下64位c程序,请计算输出的三个sizeof分别是()
void func(char str_arg[])
{
cout<<sizeof(str_arg)<<endl;
}
int main(int argc,char* argv[])
{
char str[]="Hello";
char *p=str;
cout<<sizeof(str)<<endl;
cout<<sizeof(p)<<endl;
func("test");
return ;
}

6,8,8      64位的指针大小为8, str_arg做形参是一个指针。

 
9. 重载要求输入参数个数或者类型发生变化。只有返回值类型不同,不算重载!!
 
10.下面代码的输出:
char *c[] = { "ENTER", "NEW", "POINT", "FIRST" };
char **cp[] = { c+, c+, c+, c };
char ***cpp = cp; int main(void)
{
printf("%s", **++cpp);
printf("%s", *--*++cpp+);
printf("%s", *cpp[-]+);
printf("%s\n", cpp[-][-]+);
return ;
}

答:POINTERSTEW   注意++, -- , *(取值) 的优先级都大于 加减法

 
 
05-28 21:26