指针 和引用 || 静态成员函数 || 虚函数 || 系统调用和库函数 ||
来源:互联网 发布:淘宝网天猫孕妇装 编辑:程序博客网 时间:2024/05/29 06:38
1.以下说法错误的是:
2.下列有关静态成员函数的描述中,正确的是:解答:D
静态成员由该类的所有对象共享的,静态成员属于该类所有对象公有,可以被类对象调用;静态成员受private的限制
解答:C
指针和引用做为函数参数都可以改变实参
指针和引用都可以在定义后任意的改变指向
引用必须在创建的时候初始化,而指针则不需要
不能空引用,但是可以有空指针
解答:B
指针,传地址方式;引用,所指对象的别名,对它的操作就是对实参的操作。指针和引用做为函数参数都可以改变实参
指针在使用过程中,可以对其重新赋值;引用在使用过程中自始至终指向初始化时所指,一般使用过程中不会改变。引用一旦成为某个变量的别名,在程序运行过程中不能修改这种指针关系。
引用必须有所指向,即声明的同时初始化,即不能有空引用;
指针可以为空,这也使得它在使用过程时总要受到检查,防止为空。
静态数据成员可以在类体内初始化
静态数据成员不可以被类对象调用
静态数据成员不受private控制符作用
静态数据成员可以直接用类名调用
class circle{int a; // 普通变量,不能在类中初始化static int b; // 静态变量,不能在类中初始化static const int c=2; // 静态整型常量,可以在类中初始化static const double PI=3.1416;//error C2864: 只有静态常量整型数据成员才可以在类中初始化} ;
静态成员由该类的所有对象共享的,静态成员属于该类所有对象公有,可以被类对象调用;静态成员受private的限制
静态成员属于类和该类的所有对象,可以用类名直接调用
3.以下程序的输出是
class Base { public: Base(int j): i(j) {} virtual~Base() {} void func1() { i *= 10; func2(); } int getValue() { return i; } protected: virtual void func2() { i++; } protected: int i;};class Child: public Base { public: Child(int j): Base(j) {} void func1() { i *= 100; func2(); } protected: void func2() { i += 2; }};int main() { Base * pb = new Child(1); pb->func1(); cout << pb->getValue() << endl; delete pb; }
11
101
12
102
Base * pb = new Child(1),首先创建子类对象,初始化为1;
func1()不是虚函数,所以pb->func1()执行的是基类的func1函数,i= 10,然后调用func2()函数;
这里的func2是虚函数,要往下派生类寻找,找到后执行派生类中的func2(),此时,i = 12;
最后执行pb->getValue(),结果为12
4.以下函数中,和其他函数不属于一类的是____。fwrite
putc
pwrite
putchar
getline
scanf
Linux下对文件操作有两种方式:系统调用(system call)和库函数调用(Library functions)。系统调用实际上就是指最底层的一个调用,在linux程序设计里面就是底层调用的意思。面向的是硬件。而库函数调用则面向的是应用开发的,相当于应用程序的api。
简明的回答是:函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。
pwrite是系统调用,其他都是库函数
常见文件系统 系统函数
- fcntl 文件控制
- open 打开文件
- creat 创建新文件
- close 关闭文件描述字
- read 读文件
- write 写文件
- readv 从文件读入数据到缓冲数组中
- writev 将缓冲数组里的数据写入文件
- pread 对文件随机读
- pwrite 对文件随机写
在组合时,为了保证成员对象被正确清除,在组合类的析构函数中需要显式调用其成员对象的析构函数
在类的继承层次中,可以自动进行向上和向下类型转换.而且都是安全的
构造函数可以重载,析构函数不能重载
C++的派生类如果要覆盖一个继承到的成员函数,在基类中需要将该函数声明为virtual
解答:AB
A选项:在组合类的析构函数中并不需要显式调用其成员对象的析构函数,因为当执行组合类的析构函数
时,其数据成员也会被销毁,对于类成员对象来说,成员对象销毁时,程序会自动调用其析构函数;不过
对于组合类中new的指向类成员的指针,组合类需要自己去delete该指针;
B选项:显然是错的,在类继承层次中,基类在上,派生类在下,所以可以自动进行向上类型转换,即可
以使基类指针和引用指向派生类对象,而不可以使派生类指针和引用指向基类对象;
C选项:对的,构造函数可以根据参数的不同实现函数重载,而因为析构函数没有参数,对于一个类来说
也是唯一的,所以是不能重载的;
D选项:即派生类想要重写继承来的成员函数,需要用到virtual函数,来实现动态多态。
阅读全文
0 0
- 指针 和引用 || 静态成员函数 || 虚函数 || 系统调用和库函数 ||
- This 指针和静态成员函数
- C++成员函数指针定义和调用
- 静态函数和静态成员
- 函数指针和引用
- 静态成员变量和静态成员函数
- 静态成员和静态成员函数
- 静态成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态数据成员和静态成员函数
- 静态成员函数和静态成员变量
- 静态成员变量 和 静态成员函数
- 静态成员和静态成员函数
- 静态成员变量和静态成员函数
- 静态成员变量和静态成员函数
- 静态成员数据和静态成员函数
- 静态数据成员和静态成员函数
- 静态数据成员和静态成员函数
- intersection set
- 好久不见>_< 转载 java有关泛型方法重载
- c++循环语句中变量的生存周期
- usaco Milking Cows
- C语言初步-第32讲:循环思想启蒙(输出小星星)
- 指针 和引用 || 静态成员函数 || 虚函数 || 系统调用和库函数 ||
- MySQL:datediff函数
- session+cookies+localStorage+sessionStorage
- gdb调试及常用定位手段
- 数据库事务ACID
- Springboot系列:Springboot与Thymeleaf模板引擎整合基础教程(附源码)
- NGINX as a Reverse Proxy
- CodeForces 86C AC自动机
- struts1的一个登录的简单例子