33,311
社区成员
发帖
与我相关
我的任务
分享
// E_NotReturnRefOfPriData.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
class address
{
public:
address();
address(string address);
address(const address &);
virtual ~address(){}
string get_address() const{return address_value;}
string *_w64 get_address_of_address_value(){return &address_value;}
//address &operator =(const address& add){ address_value=add.get_address();size=static_cast<unsigned int>(strlen(add.get_address().c_str()));return *this;}
friend ostream &operator <<(ostream &s,address &r);
private:
string address_value;
unsigned int size;
};
address::address()
{
address_value="empty address";
size=static_cast<unsigned int>(strlen(address_value.c_str()));
//试验string类自带的函数"size()"
}
address::address(string address)
{
if(address.empty())
{
address_value="empty address";
}
else
{
address_value=address;
}
size=static_cast<unsigned int>(strlen(address_value.c_str()));
//试验string类自带的函数"size()"
}
address::address(const address &Ref_address)
{
string address_value=Ref_address.get_address();
//试验string类自带的函数"size()"
}
//以下做法是错误的,虚函数必须在体内实现。
//详见微软官方解析:http://msdn.microsoft.com/en-us/library/68y53azf(VS.71).aspx
//virtual address::~address(){}
ostream &operator <<(ostream &s,address &r)
{
cout<<r.get_address()<<endl;
return s;
}
class person:public address
{
public:
person():person_address("China"),age(20),name("Cora"){}
//person(address person_address_val,int age_val,string name_val):person_address(person_address_val),age(age_val),name(name_val){}
person(address person_address_val,int age_val,string name_val)
{
person_address=person_address_val;
age=age_val;
name=name_val;
}
//复制构造函数缺省
~person(){}
//访问变量
address &get_person_address(){return person_address;}
string get_person_name(){return name;}
int get_person_age(){return age;}
friend ostream & operator <<(ostream &s,person &r);
private:
address person_address;
int age;
string name;
};
ostream & operator<<(ostream &s,person &r)
{
cout<<"Name:"<<r.get_person_name()<<endl;
cout<<"Age:"<<r.get_person_age()<<endl;
cout<<"Address:"<<r.get_person_address()<<endl;
return s;
}
int _tmain(int argc, _TCHAR* argv[])
{
person p1;
cout<<p1<<endl;
address ad("China Shanghai");
person p2(ad,26,"Zhou Yanfei");
cout<<p2<<endl;
//address add1("");
//add1=s.
system("pause");
return 0;
}
address::address(const address &Ref_address)
{
string address_value=Ref_address.get_address();
//试验string类自带的函数"size()"
}
address::address(const address &Ref_address)
{
address_value=Ref_address.get_address();
//试验string类自带的函数"size()"
}