您的位置:首页 > 编程语言 > C语言/C++

c++类与对象,构造函数

2016-06-16 09:22 453 查看
2016 6 15

类和对象

1.对象组成:属性(静态特征)、行为(动态特性)

        人:姓名、性别、年龄   吃饭、睡觉、打豆豆

长方形:长、宽 、高、 计算面积、计算周长、放大、旋转、

2.类 对象:类是对象的一个类型 int a float b

        对象就是一个变量(对象是类的一个实例)

 

 面向对象3大特征:封装、继承、多态

命名

(1)定义类时,类名首字母一般大写

(2)同一个作用域中类名需要唯一

构造函数:对对象属性赋初值(开辟空间初始化)

特征:

1.和类名完全相同

2.必须为public公有      @@因为创建对象自动要调用构造函数,如果不是必须是public,对象不会创建成功

3没有返回值

4.可以有参数 

       

//构造函数

    Circle();    //构造函数:在创建对象时自动调用

    Circle(10);    //构造函数 没有带参数 给定默认值

    Circle(10,20);    //创建对象时。有几个实参。那么就调用带有几个参数的构造函数

    Circle(10,20,30);

使用方法:Circle cc(10,20,30);       ¥¥ 

    cout<<cc.getArea()<<endl;

    //当程序中没有任何构造函数。编译器自动提供一个没有参数的构造函数

    // 如果自定义任何一个构造函数。编译器不再提供构造函数

    //默认构造函数。不传递任何参数就变调用的函数被称做默认构造函数

Circle.cpp文件中(实现)

Circle::Circle(){//构造函数:在创建对象时自动调用

    //构造函数 没有带参数 给定默认值

    x=1;

    y=1;

    r=3;

}

Circle:: Circle(int _x){//创建对象时。有几个实参。那么就调用带有几个参数的构造函数

    x=_x;

    y=1;

    r=3;

}

Circle::Circle(int _x,int _y){

    x=_x;

    y=_y;

    r=3;

}

Circle::Circle(int _x,int _y,int _r){

    x=_x;

    y=_y;

    r=_r;

}

Circle.hpp文件(声明)

#ifndef cidcle_hpp

#define cidcle_hpp

#include <stdio.h>

class Circle{

public:    //公有

    Circle();

    Circle(int _x);

    Circle(int _x,int _y);

    Circle(int _x,int _y,int _r);

    void setR(int _r);

    void setX(int _x);

    void setY(int _y);

    

    int getR();

    int getX();

    int getY();

    

    float getArea();

    float getPrea();

private:  //私有

    int r;

    int x;

    int y;

};

//结构体: 所有元素+(补齐)

//类:属性和(与行为‘无关’) 类占用存储空间的大小 
@@

  

class a{

public:

    int s();

    float d();

private:

    int a;

};//4 属性和(和行为无关) 类占用存储空间的大小

class b{

    

};//1

系统给定的默认值1

    b a;

    b b;//为了区分两者

习题

/*

  自定义人类(Person)

  属性:姓名,性别,年龄 ,爱好(char name[20],strcpy)

  行为:默认构造函数,有4个参数构造函数,一个设置函数(设置全部信息),一个输入个人信息

 主函数:创建4个对象,定义一个指针数组,循环数组,查看数组中每个人的信息

 */

#include "Person.hpp"

#include<string.h>

#include<iostream>

using namespace std;

People::People(){

    

}

People::People(char *_name,char *_sex,int _age,char *_hobby){

    strcpy(name,_name);//$$$

    strcpy(sex,_sex);

    age=_age;

    strcpy(hobby,_hobby);

}

void People::setMassage(char *_name,char *_sex,int _age,char *_hobby){//void

    strcpy(name,_name);

    strcpy(sex,_sex);

    age=_age;

    strcpy(hobby,_hobby);

}

void People::print(){//void

    cout<<"name:"<<name<<"sex:"<<sex<<"age:"<<age<<"hobby:"<<hobby<<endl;

}

#include "Person.hpp"

#include<string.h>

#include<iostream>

using namespace std;

People::People(){

    

}

People::People(char *_name,char *_sex,int _age,char *_hobby){

    strcpy(name,_name);//$$$

    strcpy(sex,_sex);

    age=_age;

    strcpy(hobby,_hobby);

}

void People::setMassage(char *_name,char *_sex,int _age,char *_hobby){//void

    strcpy(name,_name);

    strcpy(sex,_sex);

    age=_age;

    strcpy(hobby,_hobby);

}

void People::print(){//void

    cout<<"name:"<<name<<"sex:"<<sex<<"age:"<<age<<"hobby:"<<hobby<<endl;

}

#include <iostream>

using namespace std;

#include"Person.hpp"

int main(int argc, const char * argv[]) {

   

//    People per1;

//    People per2;

//    People per3("wensen","boy",21,"dance");

//    People per4("xiaohong","girl",20,"reading");

//    

//    per1.setMassage("zhangsan","boy",20,"write");

//    per2.setMassage("nanxi","girl",19,"sing");

//  per1.print();

   

//第一种方法: People *m[4]={&per1,&per2,&per3,&per4};

////    (*array[i]).print();
第二种:

    People* p[4];

    p[0]=new People ("wensen","boy",21,"dance");

    p[1]=new People ("xiaohong","girl",20,"reading");

    p[2]=new People ("wensen","boy",21,"dance");

    p[3]=new People ("xiaohong","girl",20,"reading");       //必须一个一个赋给指针数组

    for(int j=0;j<4;j++)

    {

         p[j]->print();

    }

    std::cout << "Hello, World!\n";

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  对象 class