一、创类
1.类的特征
1.类:决定一个对象将是什么样的(具备什么属性和功能) 2.类包含什么: 属性(特征,成员变量)和方法(功能操作,成员函数)
2.类的成员访问
1.类内访问:通过成员函数(不限) 2.类外访问:对象、对象指针(公有)
3.类的类型
1.公有类型(一般是方法):public关键字声明,该类型成员定义了类的外部接口,在类外只能访问该类的公有成员 2.私有类型(一般是属性):private关键字声明,只能被本类成员函数访问,来自类外部任何访问非法 3.保护类型:暂时先不解
4.类的基本结构
class 类名称 { public:(必须要有) 成员函数 private: 成员变量 }; /// /// 成员函数的实现 void(函数返回类型) 类名称::成员函数名(参数) { 实现内容 } /// /// 主函数使用类 1.先定义类的变量:类名称+自己定义变量名 2.利用自己定义的类的变量调用成员函数:自己定义变量名.成员函数
5.创类实例
#include <iostream>
using namespace std;
class Clock{
public:
void setTime(
int h=
0,
int m=
0,
int s=
0);
void getTime();
private:
int hour,minute,second;
};
void Clock::setTime(
int h,
int m,
int s)
{
hour=h;
minute=m;
second=s;
}
void Clock::getTime()
{
cout<<hour<<
":"<<minute<<
":"<<second<<endl;
}
int main()
{
Clock myClock;
cout<<
"first time"<<endl;
myClock.setTime();
myClock.getTime();
cout<<
"second time"<<endl;
myClock.setTime(
8,
30,
30);
myClock.getTime();
return 0;
}
二、构造器
(初始化工作,在定义中,对成员变量赋初值)
1. 构造器注意点
1.构造器的名字必须和它所在的类的名称完全相同 2.系统在创建某个类的实例时,会第一时间自动调用这个类的构造器 3.构造器永远不会返回任何值 4.若没有自己添加构造器,编译器会自动添加最简单的构造器
2.构造器创建
///构造器中无参 class A { public: A(); … }; A::A() { 成员变量=值; … } … int main() { A myA; myA.输出作用的成员函数 … } /// 构造器中有参 class A { public: A(int p=8){//这里是类内定义了 成员变量=p; } … }; int main() { … }
3.构造器无参和有参实例
#include <iostream>
using namespace std;
class A
{
public:
A();
void setA(
int newA);
void getA();
private:
int q;
};
A::A()
{
q=
3;
}
void A::setA(
int newA)
{
q=newA;
}
void A::getA()
{
cout<<q<<endl;
}
int main()
{
A a;
a.getA();
a.setA(
1);
a.getA();
return 0;
}
#include <iostream>
using namespace std;
class A
{
public:
A(
int p=
7){
q=p;
}
void setA(
int newA);
void getA();
private:
int q;
};
void A::setA(
int newA)
{
q=newA;
}
void A::getA()
{
cout<<q<<endl;
}
int main()
{
A a;
a.getA();
a.setA(
1);
a.getA();
return 0;
}
三、复制构造器
1.作用
我个人总结复制构造器作用就是使用一个你已经定义好的对象(已经存在),去初始化另一个同类的一个新对象
2.实例说明复制构造器
#include <iostream>
using namespace std;
class Person{
public:
void setAge(
int newAge);
void getAge();
void getName();
Person(
int a,
char n){
age=a;
name=n;
}
Person(Person &p);
int geta(){
return age;}
char getn(){
return name;}
private:
int age;
char name;
};
Person::Person(Person &p)
{
age=p.age;
name=p.name;
cout<<
"copy"<<endl;
}
void Person::setAge(
int newAge)
{
age=newAge;
}
void Person::getAge()
{
cout<<age<<endl;
}
void Person::getName()
{
cout<<name<<endl;
}
int main()
{
Person p(
14,
's');
Person b(p);
cout<<b.geta()<<endl;
cout<<b.getn()<<endl;
return 0;
}
转载请注明原文地址: https://ju.6miu.com/read-20500.html