C++ prime/笔试 总结二
11.当使用free释放掉一个指针内容后,指针变量的值被置为NULL
12.|| 优先级大于 && ;
c没有bool类型; c++才有
13.题目:
char *p = “abc”;
char *q = “1234”;
*p = *q; //是错的,两个指针都指向了字符串常量,不能重新赋值
14.静态局部变量static 只初始化一次,以后再调用不再初始化
PS:类中设置的静态函数只能访问静态(成员)变量
15.(1)友元类是单向的,不对称,不传递; 所以类A的友元类的派生类不一定是类A的友元;
(2)友元类的成员函数可以访问此类的所有成员,包括private成员;
(3)友元函数 不是该类的成员,而它本身也并普通意义上的声明(不算声明); 也不受该类所在区域访问控制符的约束;且友元的作用是影响访问权限;
16.以下五个运算符不能重载:
成员运算符: .
指针运算符: *
作用域运算符: ::
sizeof //注: sizeof()不是函数,是关键字或运算符
三元条件运算符: ?:
17.(1)特征多态包括: 重载多态 和 强制多态
(2)通用多态包括: 参数多态 和 包含多态
18.以下语句可能产生未定义的行为:
(1) int i = 0;
cout<<i<<" "<<i++<<endl;
//由编译器决定先求i 还是先求i++
(2) f()+g()+j(); //c++没有规定函数的掉用顺序,所以由你的编译器决定,或者说由那个编写了编译器的人决定
(3) 数组的默认初始化 是未定义的
(4) 在函数体内 的内置类型变量不初始化或赋值也是未定义的
//内置类型:int,long long int,double等基本类型
19.(1) . 运算符 用于获取类对象的一个 成员
(2) ->运算符 用于类对象的 指针类型; (试试就知道)
20.函数只能定义一次,但可以声明多次.
21.(1)虚函数不是没有实现的函数,而且必须为没一个虚函数提供定义; (特别要和Java区分开来)
c++中的多态就是由虚函数实现的.
(2)C++中的普通函数的解析过程发生在编译时,而需函数的解析发生在运行时;(运行时多态)
(2)C++中的虚函数用virtual修饰;每个虚函数都会有一个虚函数表;该虚函数首先会从父类中继承得到父类的虚函数表,如果子类中重写了父类的虚函数,那么,实际要调用哪个虚函数是根据当前 实际的对象 来判断(不管指针”所属类型”是父类还是当前类);指针当前”指向的是哪种类型”的对象,就调用哪个类型定义的虚函数.
C++中虚函数与Java 中的抽象函数,大致有如下对应关系:
C++ Java
虚函数 ———- 普通函数
纯虚函数 ——– 抽象函数
抽象类 ———- 抽象类
虚基类 ———- 接口
22.预处理器:是在编译之前执行的一段程序
最常见的就是 #include,#define
//注:#define a 10 就是用 10替换a的意思,而实际情况特别是笔试题 不加括号的表达式,其运算顺序特别要注意,多做题就知道了
还有 #ifdef :当且仅当变量已定义时执行...(至#endif)
#ifndef :当且仅当变量未定义时执行...(至#endif)
#endif :预编译到此为止