day6

发布时间 2023-08-25 23:54:06作者: skural


结构体变量.成员名。 (
*指针变量).成员名。 指针变量->成员名。 注意A选项是指针变量,C选项是结构体变量

 

应该是D sizeof(类)计算的是类中存在栈中的变量的大小,而类中的b和*c都是static静态变量,存在全局区中,因此不在计算范围之内,于是只剩下char a,void *p和两个virtual虚函数,a是char类型,占用一个字节,p是指针,在64位系统的指针占用8个字节,而两个虚函数只需要一个虚函数表指针,也是八个字节,加上类中的对齐方式(char a对齐时后面补上7个字节),故答案为24.

 

类 B0、B1、D1 均包含虚函数,传引用和传指针依然指向原来的对象 d1,因此会触发正常虚函数调用。但是传值会触发拷贝构造函数,如果参数为 B0 ptr,则 ptr 指向的是 B0 对象,调用 ptr.display(); 程序输出 B0。

 

  按位与运算符(&): 
 
  两位同时为“1”,结果才为“1”,否则为0。 
 
  按位或运算符(|): 
 
  只要有一个为1,其值为1。 
 
  异或运算符(^): 
 
  两个相应位为“异”(值不同),则该位结果为1,否则为0。 
 
  左移运算符(<<): 
 
  将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 
 
  右移运算符(>>): 
 
  将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 
 
  不同长度的数据进行位运算: 
 
  如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。 

 

如果只是声明一个空类,不做任何事情的话,编译器会自动生成 
 
  一个默认构造函数 
 
  一个拷贝默认构造函数 
 
  一个默认拷贝赋值操作符 
 
  一个默认析构函数 
 
  这些函数只有在第一次被调用时,才会别编译器创建。所有这些函数都是inline和public的。 

 

p1是指向字符常量的指针,p1本身不是常量,所以p1++合法,A正确。 p2本身是指针常量,可以指向非常量的字符。但是"hello"这样声明的字符串是存储在只读存储区的,不可修改,