有关构造和析构函数

1.c++的内联函数相当于c的宏函数(#define),消除函数调用时的时间和空间消耗,频繁被调用的小函数适合写成内联函数,内联函数被调用时即把函数体展开。

inline int max(int a, int b)

{

  return a > b ? a : b;
}

等价于 :

#define max(a, b) a > b ? a : b

2.面向对象的特征:封装、继承和多态。封装隐藏实现细节,使代码模块化;继承可扩展已经存在的代码块;二者都是有利于代码的重用;多态则是为了实现接口的重用。

3.构造函数:与类名相同,主要是用于初始化成员变量,构造函数没有返回值,允许重载。

4.拷贝构造函数:只有一个参数,参数为当前类的对象的引用,用已有的对象初始化新的对象。标准的拷贝构造函数Student(const Student & s)

例如:

class Student

{

 private:

  int sNum;

  char sName[20];

  float sGrade;

public:

  Student(){}

  Student(int sNum)

  {

    this.sNum = sNum;

  }

  Student(int sNum,char sName[], float sGrade)

  {

    this.sNum = sNum;

    strcpy(this.sName,sName);

    this.sGrade = sGrade;

  } 

  //拷贝构造函数

  Student(Student &stu){}

}

int main()

{

  Student s;

  Student s1(1000);

  Student ss(1500,“abs”, 100);

  Student * pStu1 = new Student;

  Student* pStu2 = new Student(2000);

  Student s2 = s1;  //栈内拷贝构造

  Student s3(s1);  //栈内拷贝构造,和s2本质相同

  Student * pStu3 = new Student(s1)  //堆内拷贝构造

  return 0;

}

5.析构函数:无返回值,无参数,不能重载。~Student()

(1)后构造的对象先析构

(2)栈内的析构发生在函数调用结束(对象生命周期结束)

(3)堆内的析构发生在delete之后

猜你喜欢

转载自www.cnblogs.com/wyj510/p/10865250.html