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;
}
类和对象
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;
}
相关文章推荐
- Android Native 绘图方法
- Python动态类型的学习---引用的理解
- 土人系列AS入门教程 -- 对象篇
- C#托管堆对象实例包含内容分析
- C#中struct和class的区别详解
- C#实现获取不同对象中名称相同属性的方法
- javascript asp教程第十一课--Application 对象
- PowerShell中使用Out-String命令把对象转换成字符串输出的例子
- VBS ArrayList Class vbs中的数组类
- VBS教程:对象-正则表达式(RegExp)对象
- 大家看了就明白了css样式中类class与标识id选择符的区别小结
- C#检查指定对象是否存在于ArrayList集合中的方法
- sql2008启动代理未将对象应用到实例解决方案
- C#编程自学之类和对象
- C++中对象的常引用、动态建立和释放相关知识讲解
- php中将一个对象保存到Session中的方法
- php对象和数组相互转换的方法
- PHP中把对象转换为关联数组代码分享
- 深入了解PHP类Class的概念
- C#写入对象或集合类型数据到xml文件的方法