使用指向对象的空指针访问对象中的成员函数

class AES
  {
      public:
          AES(){m_data=2;}
          virtual void fun1(){cout<<"fun1"<<endl;}
          void fun2(){cout<<"fun2"<<endl;}
          void fun3(){cout<<m_data<<endl;}
      private:
          int m_data;
 };
 
  int main()
  {
      VA *p=NULL;
      p->fun1();  //对象未构造,虚表未产生;编译通过,运行失败;
      p->fun2();
      p->fun3();   //对象未构造,成员变量未产生;编译通过,运行失败;
      return 0;
}

时间: 2024-11-01 07:18:37

使用指向对象的空指针访问对象中的成员函数的相关文章

浅析在类模版中构建成员函数时,使用memcpy产生的副作用

一般情况下我们在对类模版中的成员函数进行构建时会经常对一些数据进行复制拷贝,而通常情况下我们都不提倡用memcpy进行拷贝,因为在类模版中所传进来的类型可以是内置类型也可以是非内置类型,除非你在成员函数中使用memcpy前进行类型萃取,否则它所带来的副作用的后果也是很可怕的.memcpy在对内置类型可正常拷贝,而在对非内置类型拷贝时会出现浅拷贝的现象. 下面我们可以通过一个简单的顺序表程序来分析memcpy对非内置类型所产生的副作用: #include<iostream> #include&l

c++ 类中模版成员函数

C++函数模版与类模版. template <class T> void SwapFunction(T &first, T &second){ }//函数模版 template <class T>//类模版 class CTemplate{ public: void SWap(T &first, T &second){ } }; #include <iostream> class Single{ public: static Single

MFC——4个基本类中的成员函数介绍

09121852 杜军 机械设计及理论 1. CMainFrame ActivateFrame使框架对用户可视并可用 CalcWindowRect每当主框架窗口的客户区尺寸发生变化或控制条的位置发生变化,需 要重新排列客户区时,调用该函数 Create调用以构造和初始化一个与CFrameWnd对象有关的Windows框架窗口 DefWindowProc该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理 DestroyWindow销毁指定的窗口 DoDataExchange 

C++中基于成员函数是否是const重载成员函数

C++pimer中文版第四版 378页 基于const的重载 如果我们要在一个类的成员函数中定义两个函数签名完全一样的成员函数,比如display,那么可以基于是否是const成员函数来重载.比如: //非const对象可以使用可以使用任意成员,但是下面这个匹配的更好,所以一般用这个成员函数 Screen& display(ostream& os){ os << "something"; return *this;//返回的是普通引用 Screen&

在C语言结构体中添加成员函数

我们在使用C语言的结构体时,经常都是只定义几个成员变量,而学过面向对象的人应该知道,我们定义类时,不只是定义了成员变量,还定义了成员方法,而类的结构和结构体非常的相似,所以,为什么不想想如何在C语言结构体中添加成员变量呢 在C语言的结构体中是不能直接定义成员函数的,这点和C++不同,但是我们可以通过定义一个函数指针的方式来指向一个方法. 示例代码如下: 1 #include<stdio.h> 2 #include<stdlib.h> 3 typedef struct node 4

Java继承类中static成员函数的重写

在java中,static成员函数是否可以被重写呢? 结论是,你可以在子类中重写一个static函数,但是这个函数并不能像正常的非static函数那样运行. 也就是说,虽然你可以定义一个重写函数,但是该函数没有多态特性.让我们测试一下: 1 class testClass1{ 2 static void SMothod(){ 3 System.out.println("static in testClass1"); 4 } 5 } 6 class testClass2 extends

子类中的成员函数覆盖父类(name hiding)

只要子类中出现了和父类中同名的函数,父类中的所有这个名字的函数,就被屏蔽了. 静态函数成员也是如此?经过代码验证,确实如此. #include <iostream> using namespace std; class A{ public: void print(){cout << "A::print()" << endl;} }; class B:public A{ public: void print(int i ){cout <<

C/C++中的成员函数指针声明及使用

代码: 1 #include <iostream> 2 3 using namespace std; 4 5 class Test{ 6 public: 7 void func(){ 8 cout<<"func"<<endl; 9 }; 10 static void stcFunc(){ 11 cout<<"static func"<<endl; 12 }; 13 }; 14 15 int main(int

C++类中的成员函数和构造函数为模板函数时的调用方法

所谓模板函数其实就是建立一个通用函数,这个通用函数的形参类型不具体指定,用一个虚拟类型来代表,这个通用函数就被称为函数模板. 例: #include <iostream> using namespace std; class A { public: template<typename T> void display(T temp); template<typename T> A(T temp); }; template<typename T> void A: