C语言学习6

C语言笔记6

第十课 class 10

C++面向对象

用类描述对象

对象是指现实世界中的一切事物

类包括属性和方法(行为)

用class定义类

class 类名

{

​ public:

​ //公共的行为或属性(一般用于行为)

​ private:

​ //私有的行为或属性(只能在类里面调用)(一般用于属性)=>有利于信息保护

};

类不占空间,对象占空间

方法(函数):可以操作类的所有对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
using namescape std;//定义作用域
class A{ //类似于c的结构体
private:
int x;
int z;
public:
int y;
void setx(int sx){ //通过方法访问类的私有成员
x=sx;
}
void setx(int sz){ //通过方法访问类的私有成员
this->z=sz;//this只本类里面的值
}
};

int main(){
A a;
a.x=0; //无法实现,因为x在private内,无法在外调用
a.y=100;
//std::cout<<a.y<<std::endl;//若没有定义作用域需要这么写
cout<<a.y<<endl;//打印出来,y可调用
a.setx(10)//=>将x设为10,此时可调用
}

构造函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A{ 
private:
int x;
int z;
public:
int y;
A(){ //一个类里构造函数不可同名 //无参构造函数
cout<<"调用了A的无参构造函数"<<endl;
}
//可以有多个名字相同但参数不同的有参构造函数(可以存着参数类型不同数量相同)
A(int x,int y){
cout<<"调用了A的有参构造函数"<<endl;
}
};

int main(){
A a(100,200);
A a1;
}

//out:
//调用了A的有参构造函数
//调用了A的无参构造函数

作用域 ::

在类外面写里面的函数函数体:

1
2
3
4
5
6
7
8
9
10
11
12
class A{ 
private:
int x;
int z;
public:
int y;
void setx(int sx);
};

void A:: setx(int sx){
this->x=x;
}

用对象名无法调用构造函数

构造函数应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
using namespace std;
class shape{
private:
int height;
int width;
public:
int h(int x){
this->height=x;
}
int w(int y){
this->width=y;
}
int geth(){
return height;
}
int getw(){
return width;
}
};

int main() {
int x,y;
shape a;
a.h(10);
a.w(20);
cout<<a.geth()<<endl;
cout<<a.getw()<<endl;
return 0;
}
//out:
//10
//20

类的继承

class 子类:父类{

};

子类继承父类所有成员,但私有成员和私有成员函数无法访问

子类(参数):父类(参数){

};