c++学习笔记(一)---数据类型和对象

版权声明: https://blog.csdn.net/qq_31239495/article/details/80854369

c++简介:

        c++是面向对象的编程,特点可以概括为4个字:封装、抽象、继承、多态,把对象的属性和方法集合成一个独立的系统单位,尽可能隐藏对象的内部细节,对具体的问题进行概括的过程,子类对象拥有与基类相同的全部属性和方法,子类继承基类的属性和行为后,可以具有不同的数据类型和表现行为等特性。

常用代码、函数介绍:

        cout:console out(控制台输出)属于basic_ostream类的对象。输出流:数据结构+序列的索引。

       using namespace std: 名字空间,c++标准库使用的所有标识符(类,函数,对象等名称)在同一个特殊的名字空间std来定义,在没有using namespace std时,可以使用 std::cout。

        <<  在c++里面表示流操作符,支持重载

        cin >> i , cin输入操作符(提取操作符)

ifstream in:    in.open()

        ifstream in(char* filename, int open_mode)

        ios::in--打开一个可读取文件

        ios::out--打开一个可写入文件

        ios::binary--以二进制形式打开文件

        ios::app--写入所有数据将被将入文件的末尾

        ios::trunk--删除文件原来已经存在的内容

        ios::nocreate--如果要打开的文件并不存在,那么以此参数调用open函数将无法进行

        ios::noreplace--如果要打开的文件已存在,师徒用open函数打开时将返回错误

        ios::beg--使得文件指针指向文件头

        ios::end--使得文件指针指向文件尾


数据类型:数组、指针、结构:

一个数组可以把很多同类型的数值存在一个变量名下

e.g 任务:定义个数组容纳10个整数来自用户输入,计算这些值的累加和、平均值并输出

#include <iostream>

#define ITEM 10
#define input_add()
int main()
{
    //const unsigned short ITEM = 10;
    int num[ITEM];
    std::cout << "please input" << ITEM << "int number!\n\n";
    
    input_add();
    
    return 0;
}

void input_add()
{   
    for(int i=0; i<ITEM; i++)
        {
            std::cout << "please input" << i+1 << "number\n";
            
            std::cin >> num[i]
            
            while(!(std::cin >> num[i]))
                {
                    std::cin.clear();
                    std::cin.ignore(100,'\n');
                    std::cout << "please input again! \n";
                }
            
        }
    
    int total = 0;
    
    for(int j=0; j<ITEM; j++)
        {
            total += num[j]
        }
    
    std::cout << "total is " << total << "\n"
    std::cout << "mean is " << (float)total/ITEM;
    std::cout << "\n"
}

        指针:程序运行在计算机的内存上,指针指向数据的存储地址,是存放地址的特殊类型器变量,使用什么类型的指针,就要使用什么类型的指针变量,创建变量时:系统分配内存保存,每个内存块拥有一个独一无二的地址,变量的地址可以用 &variablename 语法来取得,指针的类型必须由保存其地址的变量类型一致。

int a = 345;
char b = 'C';
int *aPointer = &a;
char *bPointer = &b;
        下面的代码,第一个输出的是345,第二个输出的是123,第一个是输出a的地址所对应的值,第二个输出的是将a指针地址的值赋值为123。 
std::cout << *aPointer;
//*aPointer = 123;   会改变a的值
        数组可以拥有很多个地址,每个地址对应一个元素,数组的名字指向数组的第一个元素
int myArray[3]={1,2,3};

对象的基础--结构:

        结构是由程序员定义的、由其他变量类型组合而成的数据类型

        语法结构如下,当要处理多种属性的数据时,结构是很好的选择

struct name
{
    type varName1;
    type varName2;
    ......
}

e.g

struct Student
{
    std::string name;
    std::string id;
    char sex;
 };

Student Children;
Children.name = 'xiaoming';
Children.id = '0001';
Children.sex = 'M';     //'.'作用符用于对结构成员进行赋值
 

结构和指针:

        以下代码通过指针解引用指向结构的成员

Student Children = {"xiaoming", "00001", 'M'}
Student *pChildren = &Children;
(*pChildren).name = "lilei";
(*pChildren).id = "0002";

联合、枚举和类型别名

        整数、实数、字符、字符串、数组、指针、结构

        优于数组的向量vector

        联合:与结构相似,但是每次只能存储值中的一个,第二个数据进去,第一个数据就消失了

union mima
{
    unsigned long birthday;
    ....
    
};


对象:

对象内部可以有变量(属性)和函数(方法),对象将使用变量来存储信息,调用函数来进行操作,结构内部只有变量,对象的模型---类

class 类决定对象的功能、属性

//定义一个汽车的类
#include <iostream>
#include <windows.h>

#define FULL_GAS 85

class Car
{
    public:
        std::string color;
        std::string engine;
        float gas_tank;
        unsigned int Wheel;
        
        void setColor(std::string col);
        void setEngine(std::string eng);
        void setWheel(unsigned int whe);
        void fill_tank(float liter);
        void running(void);
        void warning(void);
}

void Car::fill_Tank(float liter)
{
    gas_tank +=liter;
}

void Car::running(void)
{
    
}

void Car::warning(void)
{
    
}

void Car::setColor(std::string col)
{
    
}

void Car::setEngine(std::string eng)
{
    
}

void Car::setWheel(unsigned int whe)
{
    
}

int main()
{
    char i;
    Car mycar;
    
    mycar.setColor("blue");
    mycar.setEngine("v8");
    mycar.setWheel(4);
    
    mycar.gas_tank = FULL_GAS;
    
    while(mycar.running())
    {
        if(mycar.running() < 10 )
        {
            mycar.warning();
            std::cout << "input?(y/n)\n";
            std::cin >> i;
            if( 'y' == i || 'Y' == i )
            {
                mycar.fill_tank(FULL_GAS);
            }
        }
    }
    return 0;
}

        :: 是作用域解析符,表示fill_tank是属于Car的类,作用是告诉编译器这个方法存在何处,或者说是属于哪一个类,对象与结构有很多相似之处,但是对象可以拥有自己的函数


猜你喜欢

转载自blog.csdn.net/qq_31239495/article/details/80854369