类的定义
#include<iostream>
#include<cstdio>
using namespace std;
class Person
{
private:
int age,height;
double money;
string books[100];
public:
string name;
void say()
{
cout<<"i'm"<<name<<endl;
}
int get_age()
{
return age;
}
void add_money(double x)
{
money+=x;
}
}; //类要加分号
int main()
{
return 0;
}
类中的变量和函数被统一称为类的成员变量
private后面的内容是私有成员变量,在类的外部不能访问;public后面的内容是公有成员变量,在类的外部可以访问
//类的使用
int main()
{
Person c;
c.name="lyf";
c.age=18;//错误,age是私有变量
cout<<c.get_age()<<endl;
c.add_money(10000);
return 0;
}
7.1区别结构体和类的作用是一样的。不同点在于类默认是private,结构体默认是public
C++ 结构体的构造函数使用 - 知乎 (zhihu.com)
#include <stdio.h>
//使用默认构造函数
struct student {
int id;
char gender;
student(){} //默认构造函数一般不可见,此处专门写出
}pig; //能不经初始化就定义变量
int main(){
pig = {23,'F'};//使用该语句必须整体赋值,不能单独赋值,用{}
printf("pig ID = %d\npig Gender = %c",pig.id,pig.gender);
return 0;
}
#include <stdio.h>
//使用自定义构造函数
struct student {
int id;
char gender;
//自定义构造函数
//可以同时初始化id和gender
student(int _id, char _gender) : id(_id), gender(_gender){}
//也可以单独初始化gender
student(char _gender) : gender(_gender){}
}; //不能不经初始化就定义变量
int main(){
student pig = student(23,'F');//定义变量,同时赋值
student Pig = student('M'); //定义变量,单独赋值
printf("pig ID = %d\npig Gender = %c\n\n",pig.id,pig.gender);
printf("Pig ID = %d\nPig Gender = %c",Pig.id,Pig.gender);
return 0;
}
7.2指针和引用
进程(process)
空间:一般指内存 xxGB
指针指向存放变量的值的地址,因此我们可以通过指针来修改变量的值。
定义指针
int* p = &c;//p指向a的地址
cout<<*p<<endl;//*p是a
数组名是一种特殊的指针。指针可以做运算:
7.3链表
//创建新节点的第一种方式
#include <iostream>
using namespace std;
struct Node
{
int val;
Node* next;
Node(): val(_val),next(_NULL);
}
int main(){
Node node = Node(1);
return 0;
}
//创建新节点的第二种方式
Node* p = new Node(1); //加new返回地址,不加返回变量值
头节点 : 第一个节点的地址 head
链表的遍历方式:
for(Node* i=head;i;i=i->next)
cout<<i->val<<endl;
添加节点:
Node* u = new Node(4);
u->next=head;
head=u;
删除节点:
head->next=head->next->next;