在使用包含内容的时候,对于表示类X的对象,存在着两种主要的可选方式:
1生命一个类型为X的成员
2生命一个类型为X*或者X&的成员
如果指针值绝不改变,那么除了效率问题和写构造函数,析构函数的方式之外,这些选择方案是完全等价的:
class X{
public:
X(int);
};
class C{
X a;
X *p;
X &r;
public:
C(int i,intj,int k):a(i),p(new X(j)),r(*new X(k)){}
~C(){delete p;delete &r;}
}
1包含指针
#include<iostream>
#include<string>
using namespace std;
class Person{
public:
Person(string name,int age){
this->name=name;
this->age=age;
}
Person(){}
virtual void show(){
cout<<name<<" "<<age;
}
private:
string name;
int age;
};
class Student{
public:
Student(string name,int age,string number1):p(new Person(name,age)),number(number1){}
Student(){}
void show(){
p->show();
cout<<" "<<number<<endl;
}
private:
string number;
Person *p;
};
int main(){
Student s("zhang",22,"091150");
s.show();
system("pause");
return 0;
}
2包含对象
#include<iostream>
#include<string>
using namespace std;
class Person{
public:
Person(string name,int age){
this->name=name;
this->age=age;
}
Person(){}
virtual void show(){
cout<<name<<" "<<age;
}
private:
string name;
int age;
};
class Student{
public:
Student(string name,int age,string number1):p(name,age),number(number1){}
Student(){}
void show(){
p.show();
cout<<" "<<number<<endl;
}
private:
string number;
Person p;
};
int main(){
Student s("zhang",22,"091150");
s.show();
system("pause");
return 0;
}
3包含引用
#include<iostream>
#include<string>
using namespace std;
class Person{
public:
Person(string name,int age){
this->name=name;
this->age=age;
}
Person(){}
virtual void show(){
cout<<name<<" "<<age;
}
private:
string name;
int age;
};
class Student{
public:
Student(string name,int age,string number1):number(number1),p(*new Person(name,age)){}
Student():p(*new Person()){} //这步不能少,一定得初始化
void show(){
p.show();
cout<<" "<<number<<endl;
}
private:
string number;
Person &p;
};
int main(){
Student s("zhang",22,"091150");
s.show();
system("pause");
return 0;
}
特别注意包含指针和引用指针,要new一个,最好加多一个析构函数delete删除一个,包含引用的时候,别忘了初始化。
分享到:
相关推荐
《C++编程思想》,原名《Thinking in C++》,作者:Bruce Eckel,翻译:刘宗田等,出版社:机械工业出版社,ISBN:7111071166,pdf 格式,大小 4MB。本资源仅包括前七章的内容。 内容简介: 本书作者根据自己学习C++...
本书以C语言游戏编程入手,以102个实例,近200个函数较为系统地介绍了C基于游戏编程与开发的方法与技巧,内容丰富并相互包容,相互渗透。以实际的基于不同平台的游戏制作为背景,知识阐述与实际案例相结合,深入浅出...
Thinking in C++ 中文版电子教案,共18章及3个附录,主要内容包括对象的演化、隐藏实现、函数重载与缺省参数、常量、命名控制、运算符重载、继承和组合、模板和包容器类、异常处理等,内容丰富,实用性强,欢迎高校...
像我的许多同行一样,我学习Windows编程是从读Petzold的书《Windows程序设计》——一本所有Windows程序员都使用的Windows编程圣经——开始的。在刚刚成为一名MFC程序员时,那天我冲进书店,想买一本能够与...
内部包含了atl控件的开发以及如何应用,演示了COM的包容与集合、自动化、事件和连接点、枚举器和集合以及线程管理等等。 ATL实现的CDHtmlDialog模板类v1.03 使用了六个类五个模块类演示了atl的调用方法 class ...
像我的许多同行一样,我学习Windows编程是从读Petzold的书《Windows程序设计》——一本所有Windows程序员都使用的Windows编程圣经——开始的。在刚刚成为一名MFC程序员时,那天我冲进书店,想买一本能够与...
像我的许多同行一样,我学习Windows编程是从读Petzold的书《Windows程序设计》——一本所有Windows程序员都使用的Windows编程圣经——开始的。在刚刚成为一名MFC程序员时,那天我冲进书店,想买一本能够与...
Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与...
该存储库包含各种各样的链接,这些链接对我的当前研究非常有用。 贝叶斯的东西 杂项机器学习 概率统计 R Julia python c++ Coursera 还要别的吗 会议和暑期学校(每年发生) 程式设计 统计与ML 多元化奖学金 ...
Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与...
Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与...
Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与...
Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与...
1) 第1章:对象入门 这一章是对面向对象的程序设计(OOP)的一个综述,其中包括对“什么是对象”之类的基本问题的回答,并讲述了接口与实现、抽象与封装、消息与函数、继承与合成以及非常重要的多形性的概念。...
在此站点上不仅有新的产品公告,而且还提供了产品的更新信息、技术文章、白皮书、专业开发人员设计的优秀示例、会议公告、以及与其他许多 FoxPro web 站点的各种链接。 问题 1-3: 如何获得技术支持,以及如何报告...