构造函数的使用

C++:面向对象(OOP)    
1、类的三特点:封装,继承,多态
2、类:就是某一类事物的模板描述
    属性:实物的特征的描述
    方法:某一类实物的功能的描述

        C++类的定义:
        class 类型名
        {
        属性
        方法    
        };
   对象:某一个类事物的具体实例。
       对象的组成:属性(就是一个实物的特征),方法(事物具有的功能)
  注:一个类属于所有人该类的实物,一个实物只能属于一个类

   class 的构造函数的自定义,公有属性,私有属性,保护属性,定义一个函数接口,用于外部可以获得私有属性的内容,但不允许进行修改操作.

#include<iostream>
#include<string.h>
using namespace std;
//定义类:(结构体)描述某一类实物的模板  (在草稿纸上画了某系车)
class people
{
//属性
public:
	int id;
	char name[10];
protected:
	short age;	
private:
	int rmb;
//方法
public:
	//默认构造函数
	people()
	{
		cout<<"对象生成,空间开始"<<endl;
		//初始化空间值
		id=0;
		strcpy(name,"nul");
		rmb=0;
		age=0;

	}
	//重载构造函数-同名函数
	people(char* n,int i,short a,int r)
	{
		cout<<"对象生成,空间开始(有参构造)"<<endl;
		strcpy(name,n);
		id=i;
		age=a;
		rmb=r;
	}
public:
	void show()
	{
		cout<<"调用show方法"<<endl;	
	}				
		
};
//定义结构体:定义新的类型 
struct student//学生
{
//属性
	int id;	//公开
	char name[10];//公开
	short age;	//隐私
};

int main()
{
//实例化对象:
	people lm;//lm调用构造函数---必有构造函数
	cout<<lm.id<<endl;
	cout<<lm.name<<endl;
	//cout<<age<<endl;  受保护

	people lz("lz",1002,3,500);//实例化--构造函数
	cout<<lz.name<<endl;
	cout<<lz.id<<endl;

/*
	//定义变量:类型 变量名;
	struct student s={1001,"lm",18},wb;
	//引用姓名
	cout<<s.name<<endl;
	//不希望外界知道s的年龄  we年龄	
	cout<<s.age<<endl;//引用温室的年龄
	//引用属性
	wb.age=28;//赋值
	cout<<wb.age<<endl;
*/
	//对象:某一类的具体实例化
	//people lm={1001,"liumiao",18,100};//只能由构造函数
	//people lm;	
	//姓名
	//cout<<lm.name<<endl;	//name可以外界访问:公有
	//ID
	//cout<<zhl.id<<endl;	//ID可以外界访问:公有
	//age
	//cout<<tzw.age<<endl;	//保护不能外界访问
	//lq
	//cout<<lq.rmb<<endl;	//私有不能外界访问
	//方法:向一个对象发送消息
	//lm.show();

	//求对象的空间---lm分配的数据空间()
	//cout<< sizeof(lm)<<endl;	
}

  实现,定义一个函数,进行访问私有属性.

#include<iostream>
#include<string.h>
using namespace std;
//类:一类事物的模板
class student
{
public:
//方法
	student();//无参构造函数
	student(int,char*,char,int );//有参构造函数
//属性
	int id;
	char name[10];	
	char sex;
public:
	short getAge();//提供公有接口---访问非公有数据
	void setAge(int);//提供公有接口---访问修改内容
protected:
	short age;//受保护
};
//类外定义函数---构造函数
student::student():id(0),sex('m'),age(0)
{
	cout<<"无参构造函数"<<endl;	
	//id=0;
	//sex='m';
	strcpy(name,"nul");
}
student::student(int i,char* n,char s,int a):id(i),sex(s),age(a)
{
	cout<<"参构造函数"<<endl;	
	//this->id=i;  等价
	//this->name=n;	
	strcpy(this->name,n);
}
//接口:
short student::getAge()
{
	return age;//age是protected类外不能访问,类内可以访问
}
void student::setAge(int age)
{
	cout<<"1---"<<age<<endl;//局部变量优先				
	cout<<"2---"<<student::age<<endl;	
	//student::age=age;
	this->age=age;
}


int main()
{
//对象的实例化:
/*
	student lm;	//分配空间---构造方法(student(void))
	cout<<sizeof(lm)<<endl;
	cout<<&lm<<endl;//输出地址
//引用成员:向对象发送消息  对象.成员  地址->成员
	cout<< lm.id <<endl;
//定义对象指针变量:
	student* ps=&lm;	
//通过指针引用内容:
	cout<<ps->id<<endl;
	//cout<<ps->age<<endl;
	cout<<ps->getAge()<<endl;
	//ps->setAge(18);
	lm.setAge(18);
	cout<<"----"<<ps->getAge()<<endl;
*/
	student tzw(1001,"tzw",'m',19);//调用无参构造函数
	cout<<tzw.id<<endl;
	//cout<<tzw.age<<endl;
	cout<<tzw.getAge()<<endl;
}

猜你喜欢

转载自blog.csdn.net/Superman___007/article/details/81491025