一些C++和链表的杂记

c++

面向对象的三大特性

封装,继承,多态

1,封装

对象有属性和行为,在设计时一并

class+名称

{

//访问权限

//属性==变量,成员属性

//行为==函数,成员函数

};

2,三类权限;

1,public:类内外都可以访问

2,protected:类内可以,类外不可以

3,private:类内可以,类外不可以 主要的不同体现在继承

struct 默认权限是公共

class 的默权限是私有

为什么要设置get和set

成员属性设置为私有的好处

具体操作步骤:可以在类内设置一个公共函数,来对private属性进行读写的操作

1,将成员属性设置为私有,可以自己控制读写权限

2,对于写权限,我们可以检测数据的有效性

3,封装案例:成员函数和全局函数

4,在一个类中,可以让另一个类作为本类的成员

构造函数和析构函数

对象的初始化和清理

语法

构造函数的分类和调用

有参构造 和 无参(默认)构造

按照类型来分类

拷贝构造函数(将张三的属性赋值给李四)

example{

person ( const person &p)

{

age=p.age;

}

普通构造

调用

1,括号法

person p1;//无参 调用默认构造函数的时候不要加“ ( ) ”因为这会导致编译器认为是一个函数的声明,不会认为这是一个对象

person p1 (10);//有参

person p3 (p2);//拷贝构造函数的调用

2,显示法

person p1;

person p2=person( 10 );//有参构造

person p3 =person(p2);//拷贝构造

person ( 10 );这是一个匿名对象;当前执行结束后,系统会立即回收掉匿名对象

不要利用一个拷贝函数来初始化一个匿名对象,编译器会认为我们重定义

3,隐式转换法

person p4 =10;相当于person p4 =person( 10 );

拷贝构造函数的调用时机

运算符重载

对运算符进行重载,使其适应不同的数据类型,(包括自己定义的)

可以通过成员函数和全局函数

区别:传函数引用的数量不同

example:

成员函数重载运算符

class person

{

public:

person operate+( preson &p )

person temp;

temp.m_A =this->m_A+p.m_A;

temp.m_A =this->m_A+p.m_A;

return temp;

}

全局函数重载

两个重载的本质

对于内置的数据类型的表达式运算的运算符是不可能改变的

vector

为什么要使用链表

链表是由结点组成的,一个节点至少有两个元素

各个成员的结点不是连续存储的

最后一个成员的指针是NULL

链表的代码实现

1,结点(node)

struct node {

int value;

struct node* next;//指向一个结构体的指针

};

int main(void){

struct node a;'//是一个结点

struct node b;

struct node* list = NULL;//空链表

list = &a;//list 链表

a.next=&b;

b.next =NULL

return 0 ;

}(该代码仅供参考理解性使用,没有具体使用价值)

链表的类型

1,有没有头节点

2,单双链表

3,有没有环(链表和循环链表)

1,不带头结点的链表:每一个结点都包含数据,比较原始

2,带头结点的链表:每一个数据结点都有一个前驱

链表的基础操作

1,创建链表

struct node{

int value;

struct node*next;

};

struct node* list_create(){

struct node *list = (struct node *)malloc(sizeof(struct node));//申请动态堆空间内存

//可以设置个函数来检查内存是否分配成功

if(list==NULL){
return NULL;

}

list->next =NULL;

return list;

}

使用数组来创建列表

struct node*list_create(int data[],int n){

}

3,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值