案例:
对象数组及遍历
创建汽车对象数组,对象元素采用匿名对象实例化,然后遍历对象数组,访问每个元素的display方法。
输入:
无
输出:
奥迪 230000
宝马 350000
奔驰 400000
#include <iostream>
#include<string>
using namespace std;
class Car{
private:
string brand;
double price;
public:
Car(){
}
Car(string brand,double price){
this->brand = brand;
this->price = price;
}
void display(){
cout<<this->brand<<" "<<this->price<<endl;
}
};
int main(){
//cout<<"奥迪 230000\n宝马 350000\n奔驰 400000"<<endl;
Car("奥迪",230000).display();//匿名对象实例化
Car("宝马",350000).display();
Car("奔驰",400000).display();
return 0;
}
案例:
函数参数类型、普通对象、对象引用、对象指针
根据要求创建方法:
showStudent1方法,参数类型为普通对象,输出“对象作为函数参数”提示,并调用对象display方法
showStudent2方法,参数类型为对象指针,输出“对象指针作为函数参数”提示,并指向display方法
showStudent3方法,参数类型为对象引用,输出“对象引用作为函数参数”提示,并调用对象display方法。
输入:
无
输出:
对象作为函数参数
张宝 22
对象指针作为函数参数
金天 25
对象引用作为函数参数
王勇 25
#include <iostream>
#include<string>
using namespace std;
class Student
{
string name;
int age;
public:
//构造函数
Student(){
}
Student( string name , int age){
this->name = name;
this->age = age;
}
void display(){
cout<<this->name<<" "<<this->age<<endl;
}
};
//对象作为函数参数
void showStudent1(Student std){
//实参的值std传给形参std,方法内改变形参,对实参无影响
cout<<"对象作为函数参数"<<endl;
std.display();
}
//对象指针作为函数参数
void showStudent2(Student* std){
//形参std是对象的指针,实参&std2是对象的地址值,方法内改变std相当于改变std2
cout<<"对象指针作为函数参数"<<endl;
std->display();
}
//对象引用作为函数参数
void showStudent3(Student& std){
//等于给std3起了一个“std”的小名,方法内改变std相当于改变std3
cout<<"对象引用作为函数参数"<<endl;
std.display();
}
//引用与指针的区别是:引用相当于起别名,指针相当于通过指针这个媒介访问地址
int main(){
Student std("张宝",22);
showStudent1(std);
Student std2("金天",25);
showStudent2(&std2);
Student std3("王勇",25);
showStudent3(std3);
return 0;
}