一些C++细节问题

2017年12月8日 3120点热度 0人点赞 0条评论
  1. C++new操作符带不带括号区别
  2. 类的空指针的成员函数调用
    • #include
      using namespace std;
      class A{
      public:
          void test()
          { printf("test A"); }
      };
      int main(){
          A* pA = NULL;
          pA->test();
          return 0;
      }
    • 上面的程序是合法的,C++在编译期间,就找到了pA的函数,发现test非虚函数,并且在其中没有对this指针的解引用操作,便直接调用。不需要在运行时寻找对象,再调用。
  3. C 和 C++ 的char*
    • C中的char * a="hello";编译是完全正确的,这里的a是一个字符指针,指向一个字符数组,但不能修改
    • C++ 的char *a="hello";gcc4.8.5编译会有警告,vc++编译直接出错

icebmji

这个人很懒,什么都没留下