• C++学习Day3


    struct 和 class

    和c#里不一样,默认public ,相当于 c#public类型的class,c#里struct是值类型
    class则默认private

    源文件中的函数调用

    Point::getX() 代表作用域 Point下的成员函数getX();不同源文件中的类中调用其他类的函数时添加#include<对应的.h>就好了
    {

    }

    构造函数

    类名(){}
    没有返回值,但是可以有参数,可以重载,程序会在调用类的对象创建时候自动调用,且只会调用一次

    析构函数

    ~类名(){}
    没有返回值,不可以有参数,不可以重载,程序会在调用类的对象销毁时候自动调用,且只会调用一次
    无参构造函数使用时不要加括号,否则会被当成函数声明,Person p1;//无参调用构造

    初始化列表初始化属性

    class Person{
    Person ():a(10),b(20)
    int a;
    int b
    }
    class Person{
    Person (int a1,int b1):a(a1),b(b1)
    int a;
    int b
    }
    

    this的使用

    this-> 和c#里this.的意义一致

    友元

    就是c#里全局变量的意思
    需要在头文件.h中的这个类的第一行写需要另一个类的友元类或者函数声明,来调用声明位置这个类的私有变量(private属性)
    声明示例:
    class 需要访问私有属性的类
    {
    friend 另一个类或者函数;//第一行
    }

    加号运算符重载

    class Person
    {
    public:
    Person operator+(Person &p)
    {
    里面写重载的内容
    }}

    继承

    • 公共继承:可以被该类中的函数、子类的函数、其友元函数访问,也可以由该类的对象访问
      class 子类:public 父类 子类也称为派生类,父类也称为基类
      {}
    • 保护继承 protected 可以被该类中的函数、子类的函数、以及其友元函数访问,但不能被该类的对象访问
    • 私有继承 pricate 只能由该类中的函数、其友元函数访问,不能被任何其他访问,该类的对象也不能访问. 私有继承之后,子类里的所有变量保护级别都变成private级别,子类的子类访问不到内部的全部内容
      父类中私有内容,子类访问不到
      继承中的构造和析构的顺序如下:
      先构造父类,再构造子类,先析构子类,后析构父类

    函数模板

    语法:
    template 可以用template,都用class指定没错
    函数声明或定义
    类似参数变为泛型的函数,但是调用类作为t的类型时候需要具体化
    例子:
    template
    void myswap(T&a,T&b)
    {
    T temp=a ;
    a=b;
    b=temp;
    }
    具体化:
    template<>void myswap(Person &a,Person &b)
    {
    a.name=b.name ;
    }

    类模板 类模板只能显示指定类型,没法自动类型推导

    class Person
    {
    public:
    Person(Name name,Age age)
    {
    this->m_name=name;
    this->m_age=age;
    }
    Name m_name;
    Age m_age;
    };
    //调用
    Person<string,int> p1("孙悟空",999)
    

    vector 容器

    vector v;
    v.push_back(10);"插入数据10"
    如果是往两头加数据,用deque更快

    stack 容器

    先进后出, 不能遍历 .size返回元素个数,判断空empty

  • 相关阅读:
    C#处理json实战
    HDU3994(Folyd + 期望概率)
    POJ1270 Following Orders (拓扑排序)
    HDU 3634 City Planning (离散化)
    HDU4762(JAVA大数)
    POJ3026(BFS + prim)
    POJ1679(次小生成树)
    UVA10487(二分)
    ZOJ 2048(Prim 或者 Kruskal)
    FZU 1856 The Troop (JAVA高精度)
  • 原文地址:https://www.cnblogs.com/dengzhekaihua/p/15881888.html
Copyright © 2020-2023  润新知