任何一个对象都包括(属性,行为)
类是抽象的,不占用内存,而对象是具体的,占用内存
声明一个类类型:
声明一个结构体:
#include<iostream>
using namespace std;
class Student{
public:
string name = "liutong";
//成员函数 声明
void play();
private:
int age;
}stu3;
void Student :: play(){
cout << "我喜欢打篮球...";
}
struct person{
string name = "zhaole";
}p;
int main(){
//类的定义
Student stu;
class Student stu2;
//调用成员函数
stu.play();
stu2.play();
stu3.play();
cout << "person的name:" << p.name << endl;;
//调用数据成员
cout << "我的姓名是:" << stu.name;
return 0;
}
注意:在类中即不指定private ,也不指定public,则系统默认为私有的.
private : 私有的
public : 共有的
protected : 受保护的,不能被外部类访问
定义对象的方法:
(1)先声明类类型,然后定义对象;
class 类名字 对象名;如:stu2
类名字 对象名; 如:stu
(2)在声明类的同时定义对象,如:stu3
**注意:**直接定义对象不提倡使用,因为类的声明和使用往往是分开的,并且在定义对象时才给这个对象声明内存空间,而且,在c++ 中为了兼容c,可以用struct 声明类,不做private 或public 声明,默认是public 如:person类
类的成员函数
比如上述类中的play方法 语法
void Student :: play (){}
type 类名 作用域限定符 函数名 函数体
内置函数
类的成员函数也可以指定为内置函数,使用关键字inline 修饰
目的:为了减少时间的开销,如果在类中定义的成员函数不包括循环等控制语句,c++系统会自动将他们作为内置函数来处理
C++要求对一般的内置函数使用关键字inline 修饰,对内类定义的函数可以省略,但是对类外定义的要用inline 修饰
#include<iostream>
using namespace std;
class person{
public:
//类内定义函数可以省略inline
void play(){
cout << "我是内置函数" << endl;
};
//类内声明,要用inline修饰
inline void display();
private :
int name;
};
inline void person :: display(){
cout << "我是类外定义的内置函数" << endl;
}
int main(){
person p;
p.display();
p.play();
return 0;
}
对类成员的引用
(1)通过对象名和成员运算符访问对象的成员
(2)通过指定对象的指针来访问
(3)通过对象的引用来访问
例子:
#include<iostream>
using namespace std;
class person{
public:
string name = "haha";
};
int main(){
//通过 对象名字和运算符号访问
person p1;
cout << "p1 name :" << p1.name << endl;
//通过指向对象的指针引用
person *p;
p = &p1;
cout << "通过指向对象的指针访问name :" << p->name << endl;
//通过对象的引用访问
person &pt = p1;
cout << "通过对象的引用访问name :" << pt.name << endl;
return 0;
}