C++学习篇——基础知识

一 C++的结构特性

       ~~~~~~ 一个面向对象的c++程序一般由类的声明和类的使用量大部分组成。

#include<iostream>     // 编译预处理命令
using namespace std;   // 使用命名空间std
// 类的声明部分
class A                // 声明一个类,类名为A
{
	private:
		int x, y, z;    // 声明类A的数据成员
		...
	public:
		fun(){...}      // 声明类A的数据函数
		...
};
// 类的使用部分
int main()
{
	A a;                // 定义类A的一个对象a
	...
	a.fun();			// 调用对象a的成员函数fun
	return 0;
}

二. C++在非面向对象方面对C的扩充

1. 注释行

x = y + z;  /* this is a comment */
x = y + z;  // this is a comment

2. C++ 的输入和输出

// 标准输入流对象 cin
cin >> a >> b >> c;
// 标准输出流对象 cout
cout << a << b << c << endl;
// 设置域宽的操纵符setw(n)

3. const修饰符

      ~~~~~ 使用const来定义常量

// const float PI = 3.14 常量PI是类型化的,可以用指针指向它,但不能修改它
// define T1 a+a;define T2 T1-T1;解析后T2 = a+a-a+a
/**
const 与 指针一起使用:
(1)指向常量的指针:一个指向常量的指针变量
    const char* pc = "abcd" //声明一个名为pc的指针变量,它指向一个字符型常量,初始化pc为指向字符串"abcd"
    pc[3] = "x"  // [X] 不允许改变指针所指的常量
    pc = "efgh"  // [V] 赋值给指针另一个字符串的地址
(2)常指针:把指针变量所指的地址,而不是它所指向的对象声明为常量(创建一个不能移动的指针,不能改变指针所指的地址,但是可以改变数据)
    char* const pc = "abcd" // 声明一个名为pc的指针变量,该指针是指向字符型数据的常指针,用字符串abcd来初始化
    pc[3] = 'x' // [X],可以改变常指针pc所指地址中的数据
    pc = "efgh" // [V],不能改变常指针所指的地址
(3)指向常量的常指针:指针所指向的地址和地址中的数据均不能改动
    const char* const pc = "abcd"
    pc[3] = 'x' // [X]
    pc = "efgh" // [X]
**/

4. void型指针

       ~~~~~~ void通常表示无值,但讲void作为指针的类型时,它却表示为不确定的类型。

5. 内联函数

/**
关键字:inline
原理:编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参取代形参,程序运行时不再进行函数调用
原因:消除函数调用时的系统开销,提高运行速度;消除宏定义的不安全性
注意:
    a. 内联函数在第一次调用前必须进行完整的定义
    b. 内联函数内一般不含有复杂的控制语句,如for语句和switch语句
**/
#include <iostream>
using namespace std;
inline double circle(double r)    // 内联函数
{
	return 3.1416 * r * r;
}
int main()
{
	for(int i = 1; i <= 3; i ++)
		cout << "r=" << i << " area= " << circle(i) << endl;
	return 0;
}
r=1 area= 3.1416
r=2 area= 12.5664
r=3 area= 28.2774

6. 带有默认参数值的函数

/**
C++允许实参个数和形参个数不同
说明:在函数原型中,所有取默认值的参数都必须出现在不取默认值的参数的右边,例如
        int fun(int i, int j = 5, int k);  [X]
        int fun(int i, int k, int j = 5);
**/

7. 函数的重载

/**
定义:在同一作用域内,只要函数参数的类型不同,或者参数的个数不同,或者二者兼而有之
说明:
    a. 调用重载函数时,函数的返回值类型不在参数匹配检查之列。
    b. 函数的重载与带默认值的函数一起使用时,有可能引起二义性
    c. 在函数调用时,如果给出的实参和形参类型不相符,c++编译器会自动地做类型转化工作,转化成功,继续执行,有可能产生不可识别的错误。
**/

猜你喜欢

转载自blog.csdn.net/weixin_42994580/article/details/91411637