关于C++的一些误解

关于C++的一些误解

  1. 关于C++默认构造函数的一些误解
  • 当我们没有声明类的默认构造函数时,编译器会默认给我们生成默认构造函数?
    • 错误,在下面四种情况下会生成默认构造:
      • 带有默认构造函数的成员对象
      • 带有默认构造函数的基类
      • 带有虚函数的类
      • 有虚继承的类
  • 如果没有声明类的默认构造函数,编译器会给我们类的成员变量例如整型,指针等初始化?
    • 错误,编译器只生成其需要的用户自定义类的默认构造,对变量不初始化,这些活儿是程序员自己的事。
  1. C++ 初始化列表是按照列表中的顺序初始化的吗?
  • 错误,初始化顺序是按照类中定义的顺序。
1
2
3
4
5
6
7
8
9
10
11
12
class A{
public:
int i;
int j;
A(int val):j(val),i(j){}
};

int main(){
A a(1);
cout << a.i << " " << a.j << endl; //程序输出:32767 1
return 0;
}