【C++ Primer Plus】基础知识 2

简介: 【C++ Primer Plus】基础知识

C++语句

来看下面的程序:

#include <iostream>
int main()
{
    using namespace std;
    int carrots; //声明变量
    carrots=25;
    cout<<"I have ";
    cout<<carrots;
    cout<<"carrots.";
    cout<<endl;
    carrots=carrots-1;
    cout<<"Crunch,crunch.Now I have"<<carrots<<"carrots."<<endl;
    return 0;
}

C++中,空行将声明部分与程序的其他部分分开。

声明语句和变量

 要将信息存储在计算机中,必须指出信息的存储位置和所需的内存空间。在C++中,是使用声明语句来指出存储类型并提供位置标签。

例如声明语句:

int carrots;

这条语句提供了两条信息:需要的内存以及该内存单元的名称。此后,程序将使用名称carrots来标识存储在该内存单元中的值。

 在C++中,所有的变量必须声明。声明通常指出了要存储的数据类型和程序对存储在这里的数据使用的名称。

程序种的声明语句叫做定义声明语句,简称定义。这意味着它将导致编译器为变量分配内存空间。通常·,定义不一定是声明,上述例子中定义是声明。

 对于声明变量,C++的做法是尽量在首次使用变量前声明它。


赋值语句

 赋值语句从右往左进行。

例:

int steinway;
int baldwin;
int yamaha;
yamaha=baldwin=steinway=88;

首先,88被赋给steinway,然后,steinway的值(现在是88)被赋值给baldwin,然后,baldwin的值(88)被赋值给yamaha。

再如:

carrots=carrots-1;

 赋值表达式,从右往左计算,计算算术表达式carrots-1的值即25-1=24赋值给carrots。赋值表达式将这个新值存储到变量carrots对应的内存单元中。

cout的新花样

对于printf(),输出数字或者字符串必须使用格式空字符%d和%s,来指出要打印出来的是字符串还是整数。如果让printf()打印字符串,而错误的提供了整数(%d),printf根本发现不了错误,它将继续处理,显示一堆乱码。

 而C++插入运算符<<将根据其后的数据类型相应地调整其行为。

其他C++语句

使用cin

来看下面的程序:

#include <iostream>
int main()
{
    using namespace std;
    int carrots;
    cout<<"How many carrots do you have ?"<<endl;
    cin>>carrots;
    cout<<"Here are twwo more."<<endl;
    carrots=carrots+2;
    cout<<"Now you have "<<carrots<<" carrots."<<endl;
    return 0;
}

程序的运行情况:

How many carrots do you have?
12
Here are two more.
Now you have 14 carrots.

上面的输出表明,从键盘输入的值(12)最终被赋给变量carrots。

cin>>carrots;

从上面的语句可知,信息从cin流向carrots。就像C++将输出看作是流出程序的字符流一样,它也将输入看作是流入程序的字符流。iostream文件将cin定义为一个表示这种流的对象。输出时,<<运算符将字符串插入到输出流中;输入时,cin使用>>运算符从输入流中抽取字符。通常,需要在运算符右侧提供一个变量,以接收信息。(符号<<和>>被选择用来指示信息流的方向。)

 与cout一样,cin也是一个智能对象。

使用cout进行拼接

cout<<"Now you have "<<carrots<<" carrots."<<endl;

等同于:

cout<<"Now you have ";
cout<<carrots;
cout<<" carrots";
cout<<endl;

也可以将一条语句放在四行上:

cout<<"Now you have "
    <<carrots
    <<" carrots";
    <<endl;

当代码很长,限制输出显示的时候,这种做法很方便。

类简介

  类是用户定义的类型一种数据类型。类描述了一种数据类型的全部属性(包括可使用它执行的操作),对象就是根据这些描述创建的实体。

 类的定义格式如下:

class 类名
{
    权限控制符:
    成员;
};
  • class是定义类的关键字
  • 类名是类的标识符,其命名遵循标识符的命名规范。
  • 类名后面的一对大括号,用于包含类的成员,类的所有成员要在这一对大括号中声明。类中可以定义成员变量(也称为属性)和成员函数(也称为方法),成员变量用于描述对象的属性,成员函数用于描述对象的行为。
  • 声明类的成员时,通常需要使用权限控制符限定成员的访问规则,权限控制符包括publicprotectedprivate,这三种权限控制符的权限依次递减。
  • 大括号的后面的一个分号“;”用于表示类定义的结束。
    下定义一个学生类:
class Student
{
    public:
    void study();
    void exam();
    private:
    int age;
    string name;
};

 学生类Student中有两个成员变量age和name,它们是类的私有成员。此外,该类中还定义了study()和exam()两个函数。它们是类的公有成员。

 通常情况下,类的成员函数在类中声明,在类外实现。

在类外实现成员函数,必须在返回值之后、函数名之前加上所属的类作用域,即“类名::”,表示函数属于哪个类。

void Student::study()
{
    cout<<"学习C++"<<endl;
}
void Student::exam()
{
    cout<<"C++考试成绩100分"<<endl;
}

现在来看cout,它是一个ostream类对象,ostream类定义(iostream文件的另一个成员)描述了ostream对象表示的数据以及可以对它执行的操作,如将数字或字符串插入到输出流中。同样,cin是一个istream类对象,也是在iostream中定义的。

类描述指定了可对类对象执行的所有操作。

 要对特定对象执行这些允许的操作,需要给该类对象发送一条消息。例如,希望cout对象显示一个字符串,应向它发送一条消息,告诉它,“对象!显示这些内容!”

 C++中提供了两种发送消息的方式,一种方式是使用类方法(即上面的成员函数),另一种方式是重新定义运算符,cin和cout采用的就是这种方式。

cout<<"I am not a crook."

这条语句使用重新定义的<<运算符将"显示消息"发送给cout。

相关文章
|
16天前
|
机器学习/深度学习 C++
C/C++基础知识——数组、循环
C/C++基础知识——数组、循环
30 0
C/C++基础知识——数组、循环
|
1月前
|
C++
来自C++ Primer 5的函数指针的定义,调用等
来自C++ Primer 5的函数指针的定义,调用等
10 0
|
3月前
|
编译器 Linux C语言
C++Primer 【学习笔记】第一章 深思
main 函数在很多方面都比较特别,其中最重要的是每个 0+程序必须含有 main 函数,且 main 函数是(唯一)被操作系统显式调用的函数。
28 0
|
4月前
|
存储 编译器 程序员
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
C++ Primer Plus 第6版 读书笔记(10) 第十章 类与对象
33 0
|
4月前
|
存储 关系型数据库 编译器
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
C++ Primer Plus 第6版 读书笔记(9)第 9章 函数——内存模型和名称空间
46 1
|
4月前
|
存储 算法 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(二)
30 1
|
4月前
|
存储 Java 编译器
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
C++ Primer Plus 第6版 读书笔记(8)第 8章 函数探幽(一)
18 0
|
1天前
|
C++
C++:类的补充知识
C++:类的补充知识
7 0
|
1天前
|
编译器 C++
C++:类的默认成员函数
C++:类的默认成员函数
10 0
|
1天前
|
存储 编译器 C语言
C++:类的概念
C++:类的概念
7 0

相关产品

  • 云迁移中心