前言
玛卡巴卡,这个C++有很多一部分的内容是基于C语言的,先把C语言炒热先吧,这个也就输入和输出是不太一样的格式,其他的都是很像的写法,看看就明白了,喵~
与C语言相似的点的复习
#include <iostream>
using namespace std; //告诉编译器使用 std 命名空间。命名空间是 C++ 中一个相对新的概念。
int add(int a, int b) {
return a + b;
}
class Person {
public:
string name;
int age;
void say() {
cout << "My name is " << name << ", I'm " << age << " years old." << endl;
}
};
int main() {
//1.基本的输入输出
int a2;
cin >> a2; //从控制台输入一个整数,并将其赋值给变量 a2。
cout << a2 << endl; //将变量 a2 的值输出到控制台。
cout << "Hello, World!" << endl;
std::cout << "Hello, World!" << std::endl;
/* 区别:
* cout << "Hello, World!" << endl;:这行代码使用了 using namespace std; 这个声明,所以可以直接使用 std 命名空间中的 cout 和 endl。
* std::cout << "Hello, World!" << std::endl;:这行代码没有使用 using namespace std; 这个声明,而是在每次使用 std 命名空间中的元素时都显式地添加了 std:: 前缀。
* 也就是说,如果不使用 using namespace std; 这个声明,那么在使用 cout 和 endl 时就必须在前面加上 std:: 前缀。
*/
//2.typedef 声明
typedef int zhengxing; //typedef 关键字,用于为数据类型取一个新的名字。
zhengxing a = 10;
cout << a << endl;
/* 此处的输出应该是 10,因为 zhengxing 是 int 的别名,所以 zhengxing a = 10; 就相当于 int a = 10;。
* typedef 语句的一般形式是:typedef type newname;,其中 type 是现有的数据类型,newname 是新的数据类型名。
*/
//3.枚举类型
enum color { red, green, blue } c;
c = blue;
cout << c << endl;
/* 此处的输出应该是 2,因为枚举类型的值是从 0 开始的,所以 red 是 0,green 是 1,blue 是 2。
* 枚举类型是一种用户自定义的数据类型,用于定义变量,以表示程序中只能赋予某些离散整数值的变量。
* 枚举类型的一般形式是:enum enum-name { list of names } var-list;,其中 enum-name 是枚举类型的名称,list of names 是枚举类型的值,var-list 是一个或多个枚举变量。
*/
//4.类型转换
int i = 10;
double d = 3.14;
cout << (double)i << endl;
cout << (int)d << endl;
/* 此处的输出应该是 10 和 3,因为 (double)i 将整数 i 转换为浮点数,(int)d 将浮点数 d 转换为整数。
* 类型转换是将一个数据类型的值转换为另一个数据类型的值,C++ 中有四种类型转换方式:
* 1. static_cast<type>(expression):用于基本数据类型之间的转换,如 int 转 double,double 转 int。
* 2. dynamic_cast<type>(expression):用于将基类指针转换为派生类指针。
* 3. const_cast<type>(expression):用于去除表达式的 const 属性。
* 4. reinterpret_cast<type>(expression):用于将一个指针转换为另一个类型的指针。
*/
//4.1 静态转换
int a1 = 10;
double b1 = static_cast<double>(a1);
cout << b1 << endl;
//4.2 动态转换
class Base {
public:
virtual void print() {
cout << "Base" << endl;
}
};
class Derived : public Base {
public:
void print() {
cout << "Derived" << endl;
}
};
Base *b = new Derived();
Derived *d1 = dynamic_cast<Derived *>(b);
d1->print();
//4.3 常量转换
const int b2 = 10;
int& r = const_cast<int&>(b2); // 常量转换,将const int转换为int
cout << r << endl;
//4.4 重新解释转换
int a3 = 10;
int *p = &a3;
double *dp = reinterpret_cast<double *>(p); // 重新解释转换,将int指针转换为double指针
cout << *dp << endl;
//5.define
#define PI 3.14159
cout << PI*2*2 << endl;
//6.const
const int a4 = 10;
//a4 = 20; //这里会报错,因为 a4 是一个常量,不能被修改。
cout << a4 << endl;
//7.引用
int a5 = 10;
int &b5 = a5;
b5 = 20;
cout << a5 << endl;
//8.指针
int a6 = 10;
int *p1 = &a6;
cout << *p1 << endl;
//9.循环
for (int i = 0; i < 10; i++) {
cout << i << endl;
}
//10.判断
int a7 = 10;
if (a7 > 5) {
cout << "a7 > 5" << endl;
} else {
cout << "a7 <= 5" << endl;
}
//11.运算符
int a8 = 10;
int b8 = 20;
cout << a8 + b8 << endl;
cout << a8 - b8 << endl;
cout << a8 * b8 << endl;
cout << a8 / b8 << endl;
cout << a8 % b8 << endl;
//12.数组
int arr[5] = {1, 2, 3, 4, 5};
for (int i = 0; i < 5; i++) {
cout << arr[i] << endl;
}
//13.函数
//这里的函数在main外面,这里就在这个main的开头,如果在main的后面,就需要在main的前面声明一下。
cout << add(1, 2) << endl;
//14.结构体
struct Student {
string name;
int age;
};
Student s;
s.name = "Tom";
s.age = 18;
cout << s.name << " " << s.age << endl;
//15.类
//这里的类在main外面,这里就在这个main的开头。
Person person;
person.name = "Tom";
person.age = 18;
person.say();
return 0;//终止 main( )函数,并向调用进程返回值 0。
}