std::cout和直接cout有什么区别
时间: 2023-07-29 07:11:14 浏览: 127
`std::cout` 是 C++ 标准库中的输出流对象,使用它需要先引入命名空间 `std`,例如:
```c++
#include <iostream>
int main() {
std::cout << "Hello World\n";
return 0;
}
```
而直接使用 `cout` 必须在代码中显式地声明,否则编译器会报错,例如:
```c++
#include <iostream>
using namespace std;
int main() {
cout << "Hello World\n";
return 0;
}
```
`using namespace std;` 语句将命名空间 `std` 中的所有标识符引入当前作用域,包括 `cout`、`cin`、`endl` 等。这种方式可以简化代码,但是可能会与其他命名空间中的标识符产生命名冲突,因此不建议在头文件中使用。
相关问题
#include <iostream> #include <string> class Person { protected: std::string name; int age; std::string addr; public: void get_value() { std::cout << "请输入姓名:"; std::cin >> name; std::cout << "请输入年龄:"; std::cin >> age; std::cout << "请输入地址:"; std::cin >> addr; } }; class Teacher : public Person { public: void display() { std::cout << "姓名:" << name << std::endl; std::cout << "年龄:" << age << std::endl; std::cout << "地址:" << addr << std::endl; std::cout << "我是教师" << std::endl; } }; class Student : public Person { public: void display() { std::cout << "姓名:" << name << std::endl; std::cout << "年龄:" << age << std::endl; std::cout << "地址:" << addr << std::endl; std::cout << "我是学生" << std::endl; } }; int main() { Teacher t; Student s; s.get_value(); t = s; t.display(); return 0; }并重载operator=
在上面的代码基础上,我们可以为Teacher类重载operator=,使得可以直接将一个Student对象赋值给Teacher对象。代码如下:
```cpp
#include <iostream>
#include <string>
class Person {
protected:
std::string name;
int age;
std::string addr;
public:
void get_value() {
std::cout << "请输入姓名:";
std::cin >> name;
std::cout << "请输入年龄:";
std::cin >> age;
std::cout << "请输入地址:";
std::cin >> addr;
}
};
class Teacher : public Person {
public:
void display() {
std::cout << "姓名:" << name << std::endl;
std::cout << "年龄:" << age << std::endl;
std::cout << "地址:" << addr << std::endl;
std::cout << "我是教师" << std::endl;
}
Teacher& operator=(const Student& s) {
this->name = s.name;
this->age = s.age;
this->addr = s.addr;
return *this;
}
};
class Student : public Person {
public:
void display() {
std::cout << "姓名:" << name << std::endl;
std::cout << "年龄:" << age << std::endl;
std::cout << "地址:" << addr << std::endl;
std::cout << "我是学生" << std::endl;
}
};
int main() {
Teacher t;
Student s;
s.get_value();
t = s;
t.display();
return 0;
}
```
在Teacher类中,我们重载了operator=,使得可以将一个Student对象s赋值给Teacher对象t。在重载函数中,我们将s的数据成员name、age和addr分别赋值给t的对应成员,并返回一个指向t的引用。在主程序中,我们可以看到,我们仍然先创建了Teacher和Student对象t和s,然后调用s的get_value()函数获取数据,接着将s赋值给t,最后调用t的display()函数输出数据。
std::cout和cout
`std::cout`是C++标准库中的一个输出流对象,它是`iostream`库中的全局对象。`std`是命名空间,用于区分C++标准库中的名字和用户自定义的名字。在使用`std::cout`之前,需要包含`iostream`头文件,如:`#include <iostream>`。
`cout`是`std::cout`的简写形式,但使用这种形式之前,必须有下面的语句:
```cpp
using namespace std;
```
这行代码的作用是告诉编译器可以省略名字前的`std::`命名空间限定符。但需要注意的是,频繁使用`using namespace std;`可能会导致命名冲突,特别是在大型项目中或者使用了多个命名空间的时候。
`std::cout`可以用来输出各种类型的数据到标准输出设备(通常是屏幕),它重载了<<运算符以支持不同类型的数据输出。
阅读全文