C++学习笔记(一)

函数

调用函数

函数重载

C++中可以有多个重名的函数,只要参数不同即可,不能通过修改返回类型来修改函数,重载函数的参数类型或数量必须不同。函数重载也称为函数多态。

int store(int, int);
int store(float, float);
int store(long); 

内联函数

声明C++函数时,如果使用了inline关键字,编译器将不会创建该函数,而是将代码直接复制到调用它的地方,inline通常用在经常被调用的函数上,减少了程序跳转的次数。一般inline对程序所得有限。

类的基础学习

声明类

class people
{
public:
    char name[10];
    unsigned short age;
    void sing();
    void sleep();

private:
    unsigned int height;
    unsigned int weight;
};

public:所有类和程序均可用

private:只能在其所属类的函数内访问

创建对象

    People xiaoming;
    People xiaohong;
    xiaoming.age=10;
    xiaohong.age=9;

实现成员函数

成员函数的定义以类名打头,然后是作用于解析运算符::和函数名,

void People::sing()
{
    cout<<"I'm sing."<<endl;
}

void People::sleep()
{
    cout<<"I'm sleeping"<<endl;
}

构造函数 和 析构函数

每次实例化对象时都将调用他,构造函数的职责是创建一个有效的对象,通常包括初始化成员数据。构造函数与类同名,且没有返回值,可以接受参数,也可以不接受,所以可以有多个构造函数。编译器会根据输入的参数去查找。如果没有定义构造函数,那么编译器将自动提供给一个默认的构造函数,没有参数,一旦定义了构造函数,则编译器不会给默认的构造函数了。

构造函数用于创建并初始化对象,而析构函数用于执行清理工作并释放分配给对象的内存。析构函数由~和类名组成,不接受参数,不返回值。若不定义,则编译器会提供一个默认的析构函数。

//构造函数
People::People(unsigned short initialAge)
{
    setAge(initialAge);
}
//析构函数
People::~People()
{
    //执行什么操作看情况而定
}

存取器

int getAge() const;
void aetAge();
主要是get、set,用来获得和修改成员值。

const成员函数

如果使用const将成员函数声明为常量函数,则表明不会修改任何类成员的值。
声明方法是在括号后面添加const,定义处也要加上const

int getage() const;

获取年龄不会修改成员值,所以可以声明为常量函数,而setage()修改了成员值,所以不行。
应该尽可能的使用常量函数,如果不小心修改了数值,则编译器会报错提示。

内联实现

可将`inline放在返回类型前面。也可将函数定义直接放在类的声明里面,自动变为内联。

inline int People::setage(agei)
{
    age=agei;
}

class people
{
public:
    void getage() const {return age};
...
...
}

注意上面const后面没有分号。

class people
{
public:
    void getage() const
    {
        return age
    };
...
...
}

将其他类作为成员数据的类

创建复杂类时,经常将简单类作为复杂类的成员。

如下Point和Line的实现。

MyClass.h

#ifndef MYCLASS_H_INCLUDED
#define MYCLASS_H_INCLUDED

class People
{
public:
    People(unsigned short a);
    ~People();
    char name[10];
    unsigned short age;
    void sing();
    void sleep();
    void setAge(unsigned short age);

private:
    unsigned int height;
    unsigned int weight;
};



class Point
{
public:
    Point();
    ~Point();

    int getX() const;
    void setX(int X);

    int getY() const;
    void setY(int Y);
private:
    int X;
    int Y;
};


class Line
{
public:
    Line();
    ~Line();
    Point getFirstPoint() const { return First;};
    Point getSecondPoint() const { return Second;};

    void setFirstPoint(Point Fir);
    void setSecodnPoint(Point Sec);
private:
    Point First;
    Point Second;
};
#endif // MYCLASS_H_INCLUDED

MyClass.cpp

#include"MyClass.h"
#include<iostream>
using namespace std;

//////////////////////////////////////////////////////
People::People(unsigned short initialAge)
{
    setAge(initialAge);
}

People::~People()
{
    //执行什么操作看情况而定
}

void People::setAge(unsigned short iage)
{
    age=iage;
}

void People::sing()
{
    cout<<"I'm sing."<<endl;
}

void People::sleep()
{
    cout<<"I'm sleeping"<<endl;
}

////////////////////////////////////////////////////////
Point::Point()
{
//////
}

Point::~Point()
{
//////
}

void Point::setX(int sX)
{
    X=sX;
}

void Point::setY(int sY)
{
    Y=sY;
}

int  Point::getX() const
{
    return X;
}

int Point::getY() const
{
    return Y;
}



Line::Line()
{
    /////////
}

Line::~Line()
{
    /////////
}

void Line::setFirstPoint(Point F)
{
    First.setX(F.getX());
    First.setY(F.getY());//Firdt = F;
}

void Line::setSecodnPoint(Point S)
{
    Second = S;
}

main.cpp

#include <iostream>
#include"MyClass.h"
using namespace std;

int add(int a, int b);


int main()
{
    People xiaoming(10);
    People xiaohong(10);
    Point A,B;
    Line L;
    xiaoming.age=10;
    xiaohong.age=9;
    cout<<"小明和小红一共";
    cout<<add(xiaoming.age,xiaohong.age)<<"岁"<<endl;

    A.setX(10);
    A.setY(20);
    B.setX(15);
    B.setY(30);
    L.setFirstPoint(A);
    L.setSecodnPoint(B);

    cout<<"L的第一个点是"<<endl;
    cout<<"X="<<L.getFirstPoint().getX();
    cout<<",Y="<<L.getFirstPoint().getY()<<endl;

    cout<<"L的第二个点是"<<endl;
    cout<<"X="<<L.getSecondPoint().getX();
    cout<<",Y="<<L.getSecondPoint().getY();


    return 0;
}

int add(int a, int b)
{
    return a+b;
}

程序运行结果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值