C 面向对象编程入门:构造函数与析构函数5
来源:百度文库 编辑:神马文学网 时间:2024/06/30 19:11:42
前面我们已经简单的说了类的构造函数和析构函数,我们知道一个类的成员可以是另外一个类的对象,构造函数允许带参数,那么我们可能会想到上面的程序我们可以在类中把Student类中的teacher成员用带参数的形式调用Student类的构造函数,不必要再在Teacher类中进行操作,由于这一点构想我们把程序修改成如下形式:#include
#include
using namespace std;
class Teacher
{
public:
Teacher(char *temp)
{
director = new char[10];
strcpy(director,temp);
}
~Teacher()
{
cout<<"释放堆区director内存空间1次";
delete[] director;
cin.get();
}
char *show();
protected:
char *director;
};
char *Teacher::show()
{
return director;
}
class Student
{
public:
Student()
{
number = 1;
score = 100;
}
void show();
protected:
int number;
int score;
Teacher teacher("王大力");//错误,一个类的成员如果是另外一个类的对象的话,不能在类中使用带参数的构造函数进行初始化
};
void Student::show()
{
cout<}
void main()
{
Student a;
a.show();
Student b[5];
for(int i=0; i{
b[i].show();
}
cin.get();
}
可是很遗憾,程序不能够被编译成功,为什么呢?
因为:类是一个抽象的概念,并不是一个实体,并不能包含属性值(这里来说也就是构造函数的参数了),只有对象才占有一定的内存空间,含有明确的属性值!
这一个问题是类成员初始化比较尴尬的一个问题,是不是就没有办法解决了呢?呵呵。。。。。。
c++为了解决此问题,有一个很独特的方法,下一小节我们将介绍。
对于上面的那个"尴尬"问题,我们可以在构造函数头的后面加上:号并指定调用哪那个类成员的构造函数来解决!
教程写到这里的时候对比了很多书籍,发现几乎所有的书都把这一章节叫做构造类成员,笔者在此觉得有所不妥,因为从读音上容易混淆概念,所以把这一小节的名称改为构造类的成员比较合适!
#include
using namespace std;
class Teacher
{
public:
Teacher(char *temp)
{
director = new char[10];
strcpy(director,temp);
}
~Teacher()
{
cout<<"释放堆区director内存空间1次";
delete[] director;
cin.get();
}
char *show();
protected:
char *director;
};
char *Teacher::show()
{
return director;
}
class Student
{
public:
Student()
{
number = 1;
score = 100;
}
void show();
protected:
int number;
int score;
Teacher teacher("王大力");//错误,一个类的成员如果是另外一个类的对象的话,不能在类中使用带参数的构造函数进行初始化
};
void Student::show()
{
cout<
void main()
{
Student a;
a.show();
Student b[5];
for(int i=0; i
b[i].show();
}
cin.get();
}
可是很遗憾,程序不能够被编译成功,为什么呢?
因为:类是一个抽象的概念,并不是一个实体,并不能包含属性值(这里来说也就是构造函数的参数了),只有对象才占有一定的内存空间,含有明确的属性值!
这一个问题是类成员初始化比较尴尬的一个问题,是不是就没有办法解决了呢?呵呵。。。。。。
c++为了解决此问题,有一个很独特的方法,下一小节我们将介绍。
对于上面的那个"尴尬"问题,我们可以在构造函数头的后面加上:号并指定调用哪那个类成员的构造函数来解决!
教程写到这里的时候对比了很多书籍,发现几乎所有的书都把这一章节叫做构造类成员,笔者在此觉得有所不妥,因为从读音上容易混淆概念,所以把这一小节的名称改为构造类的成员比较合适!
C 面向对象编程入门:构造函数与析构函数5
C 面向对象编程入门:构造函数与析构函数1
C 面向对象编程入门:构造函数与析构函数4
C 面向对象编程入门:构造函数与析构函数6
c 面向对象的编程入门篇--类构造函数与析构函数
C 面向对象编程入门:构造函数与析构函数2
C 面向对象编程入门:构造函数与析构函数6
C 面向对象编程入门:构造函数与析构函数4
C++面向对象编程入门:构造函数与析构函数
面向对象编程入门:构造函数与析构函数6
PHP5的对象模型[4]--构造函数和析构函数 - Haohappy的专栏--PHP5研究...
C++类对象的拷贝构造函数
构造函数、析构函数和赋值操作符
C 类对象的复制-拷贝构造函数(深拷贝,浅拷贝
JavaScript Date 对象与函数
C++学习摘要之二:构造函数和析构函数 -计算机等级考试-考试吧
我所理解的拷贝构造函数和赋值函数 -- 业余空间 -- 编程爱好者博客
函数指针 (*(void (*)( ) )0)( ) 解析|函数,函数指针,C编程-中国源...
C++拷贝构造函数
拷贝构造函数
构造函数而不是类
拷贝构造函数
拷贝构造函数1
C++拷贝构造函数