程序设计B学习总结2

        闲聊一下:我感觉我再不总结我就啥也不会了,所以这周好好总结,然后把作业给这做完,重点是这几天太累了,我听到静态函数都睡着了,哎。(主要还是我记忆的东西不超过20分钟就忘,我想学算法了,我的搜索还没写呢

开始正题:

构造函数:

#include <iostream>
using namespace std;
class Person {
public://千万别忘记函数定义在公共区域。
    Person() {
        age = 0;
    };//无参构造函数
    Person(int x) {
        age = x;

    };//有参构造函数
    void Personprintf() {//打印
        cout << age << endl;
    }
private:
    int age;
};
int main()
{
    Person* data = new Person(5);//动态申请一个空间
    data->Personprintf();
    delete data;//释放空间啦  
}

初始化列表:

Person(int x) :age(x){}//初始化

注意:抄费费的

1.数据成员为常量;数据成员为引用类型。

#include <iostream>
using namespace std;
class A {
public:
    A(int i) :x(i), rx(x), Pi(3.14) {};//初始化引用值,初始化Pi
private:
    int x;
    int&rx;//引用类型
    int Pi;//常量

};

2.数据成员为没有无参构造函数类的对象。

class A {
public :
    A(int x) :a(x) {};//有参构造函数
    int a;
};
class B {
public:
    B(int x, int y) :aa(x), b(y) {};//初始化值
    void shuchu() {
        cout << aa.a << b << endl;
    }
private:
    int b;
    A aa;//用其他类定义数据成员,很重要
};

初始化的顺序:按类中声明顺序进行初始化,与初始化成员列表的顺序无关。

无参构造函数:什么时候必须要写。

构造函数一般被定义为公有成员。

析构函数:

class Person {
public:
    Person() {
        age = 0;
    };
    Person(int x) :age(x) {}//初始化
    ~Person() {//析构函数定义
        cout << "我爱你" << endl;
    }
    void Personprintf() {//打印
        cout << age << endl;
    }
private:
    int age;
};

        一般情况下,可以不定义析构函数(其实我觉得一般情况下,都需要定义,一般都是用指针操作,你开辟了空间,不可能不释放掉吧,那一直占用空间,那不内存越界了吗,反正都要用,不如好好用析构函数)。

 利用析构函数中进行存储空间的回收。

this指针

1.非静态成员函数中返回类对象本身对象的引用的时候,直接使用return *this,返回对象地址时,使用return this.(类本身的引用会比较难理解一点)

2.参数与成员变量名相同时,this->x=x;(这个太简单了,我不想写)

#include <iostream>
#include<string>
using namespace std;
class Person {
public:
    Person(string n,int a):name(n),age(a){}
    int get_age() {
        return age;
    }
    Person& add_age(int i) {
        age += i;
        return*this;//引用了原来这个类对象,返回this地址,这个类的地址
    }
private:
    string name;
    int age;
};
int main() {
    Person A("A", 20);
    cout << A.add_age(1).get_age() << endl;//所以我在返回这个类时再次调用get函数,输出年龄,21

}

静态成员及函数:

1.在类外定义不用static前缀。

2.静态成员函数主要访问同一类中的静态数据成员。

a.可以直接访问静态数据成员

b.访问非静态数据成员时需要:

通过引用类的方式来访问非静态成员数据。

static void add(Person& s) {//Person为该类
        cout << s.age << endl;//age为非静态成员
    }

3.私有成员函数不能在类外部或用对象进行访问。

4.可以在建立对象之前处理静态数据成员。

如何初始化静态成员?

int Person::age = 20;//age为静态数据成员,Person为类

5.公有区域的静态成员及函数在主函数中调用方法与其他函数一致

可以直接用类名::(函数名)方式访问,对象访问,指针访问等方式。

常成员:

1.只能初始化列表进行赋值,其他函数不能操作。(使用常对象时必须进行初始化操作)

2.常成员函数不能更新对象的数据,不能调用非const修饰成员函数(静态,构造除外)

3.常对象,不能改变对象的数据成员。

        整理的笔记就这些啦,先去把实验题作业写出来!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钟一淼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值