rain-xuan 发表于 2021-7-23 21:38

夯实基础_C++_Day-2

本帖最后由 rain-xuan 于 2021-7-24 12:01 编辑

# Day_2

------

## using的声明和编译指令(重点)

------



### using的声明可以让命名空间中的某个标识符可以直接使用

```
namespace A{
    int a=10,b,c;
}
test_1()
{
    using A::a; //从这一行开始以后标识符a都是A作用域中的a
    cout << a << endl;
   
    int a=20; //这是会报错的,重定义的错误,using的声明相当于局部变量,不可在局部作用域下重定义
}
```

------



### using的编译指令让命名空间中的标识符都可以直接使用

```
namespace A{
    int a=10,b=20,c=30;
}
test2(){
    using namespace A;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
   
    int a=50; //正确,因为这时的命名空间的a相当于全局变量,这里的a是局部变量,不影响就近原则
    cout << a << endl; //a的值为50,就近原则
}
```

------



## `struct`类型的加强(重点)

------

* C语言定义了结构体之后,定义变量时还要加`struct`关键字,但是C++不用
* C语言的结构体只能定义成员,但是C++既可以定义成员,又可以定义方法

------

```
struct node1{
    int a = 0;
    char name;
};

test_1(){
    node1 Node; //强化一
}
```

------

```
struct node2{
    int b = 10;
    void func()
    {
      cout << "func" << endl;
    }
};
test_2(){
    node2 Node_2;
    Node_2.func();
}
```

------

## 更加严格的类型检查(了解)

```
#include <stdio.h>
#include <stdlib.h>

int main()
{
    char* p = malloc(64); //隐式声明转换
    return 0;
}
```

------

```
#include <iostream>
using namespace std;

int main()
{
    //char* p = malloc(64); //会报错 void*
    char* p = (char*)malloc(64); //不可以隐式声明,必须显示转换
    return 0;
}
```

------

## 三目运算符(了解)

------

* c语言三目运算符返回的是右值
* c++语言三目运算符返回的是左值
* 在赋值操作符左边的为左值,右边的为右值(存疑,待完善)

------

```
test_1(){
    int a = 10;
    int b = 20;
    printf("%d\n",a>b?a:b);//打印a、b中较大的值
    (a>b?a:b) = 100; //err 等价于 20 = 100
    //正确操作
    *(a>b?&a:&b) = 100; //取a、b的地址,然后解引用,相当于给两者较大的变量符值
    printf("a=%d,b=%d",a,b); //a = 10 , b = 100
}
```

------

```
test_2(){
    int a = 10;
    int b = 20;
    (a>b?a:b) = 100;
    cout << "a=" << a <<" " << "b = " << b << endl; //a = 10 , b = 100;
}
```

memorywalker 发表于 2021-7-23 23:19

c++技巧性东西太多,做同一件事,多种方法,导致难度太大

czzzz 发表于 2021-7-23 21:45

java天下第一!

白云点缀的蓝 发表于 2021-7-23 21:51

czzzz 发表于 2021-7-23 21:45
java天下第一!

Java是c\c++写的,亲,

sergin 发表于 2021-7-23 22:20

谢谢楼主分享!

丶懒喵喵 发表于 2021-7-23 23:38

bsjasdq 发表于 2021-7-23 21:51
Java是c\c++写的,亲,

头一次看见负的吾爱币!

clevermoon 发表于 2021-7-23 23:48

对于c++l来说,难度高是名声在外

limit7 发表于 2021-7-24 00:04

感谢 分享,收藏备用,养肥了再来。

人心所向 发表于 2021-7-24 00:18

厉害厉害

tlf 发表于 2021-7-24 08:08

页: [1] 2
查看完整版本: 夯实基础_C++_Day-2