C++基础语法

本文对比了C语言与C++的区别,详细介绍了C++作为面向对象语言的功能扩展,包括函数重载、命名空间、标准输出流cout的使用及其实现原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介:

  1. c语句是面向结构的语言,c++是面向对象的语言,C++从根本上已经发生质飞跃,并对c进行丰富的扩展。
  2. c是c++的子集,所以大部c语言程序都可以不加修改的拿到c++下使用。
  3. c++不完全同于C语言,C语言,可以完全植入c++文件(变量,指针,变量,循环,内存等)
  4. c++不完全兼容C
  5. C 语言函数名是不能重名的,但在C++中,函数名可以重复,就叫做函数的重载
#include <iostream>

using namespace::std;
int main(int argc, const char * argv[]) {
    // insert code here...
    std::cout << "Hello, World!\n";

    int a=25;
    std::cout << "I am a so bad man" << a <<std:: endl;
    std:: cout << 'a' <<5<<std::endl;

    cout <<88;
    cout <<endl;
    cout << 88<<endl;

    int x=100;
    char y='c';

    //输入
//    cin >>x>>y;
//    cout <<x<<y;

    bool b=true;
    b=false;



    //字符串(对象)比较
    std:: string str="hello world";
    string str2="hello";
    cout <<str.compare(str2)<<endl;
    //字符串的增删改查
    //增
    str.append(str2);
    //删
    str.erase(3,4);
    //修改
    str.replace(1, 2, str2);
    //查子串
    str.find(str2);
 cout <<str.find(str2)<<endl;

    return 0;
}

1.std 是一个命名空间..
不同的命名空间可以有相同的类名被定义 ..
using namespace std;
就是指明下面的程序使用std,如果不用这句指明的话就要用std::string(string是std空间中定义的
也可以在全局空间中定义,只要名字空间不一样即可..)..
否则可以默认名字空间中有std.便不用std::来修饰
它是C++新标准中有的,解决多人作编大程序时名字冲突问题。比如A B两个班都有叫张三的人,你要使用A班的张三,必然要先指名是A班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错人

2.cout
C++编程语言互换流中的标准输出流,需要iostream支持。读为 “c out([si:‘aʊt]”

#include<iostream>
using namespace std;
int main()
{
    int a;
    cout << "请输入一个数字,按回车结束" << endl;
    cin >> a;
    cout << a << endl;
    return 0;
}
//用户输入的数字由cin保存于变量a中,并通过cout输出。
#include<iostream>
using namespace std;
int main()
{
    cout << "Hello,World!" << endl;
    return 0;
}//HelloWorld示例

后来随着学习的深入,总算大概明白了cout/cin/cerr/…的鬼把戏:那些东东不过是变着法儿“哄人”,其实说到底还是函数调用,不过这函数有些特殊,用的是运算符重载,确切地说(以下还是以cout为例)是重载了“<<”运算符。我们就让它现出函数的本来面目,请看HelloWorld!的等效版本:

#include<iostream>
using namespace std;
int main()
{
    cout.operator << ("Hello,World!");
    cout.operator << (endl);
    return 0;
}

上面程序应该更容易理解了:cout是一个ostream类的对象,它有一个成员运算符函数operator<<,每次调用的时候就会向输出设备(一般就是屏幕啦)输出东东。嗯,这里有一个问题:为什么函数operator<<能够接受不同类型的数据,如整型、浮点型、字符串甚至指针,等等呢?
我想你已经猜到了,没错,就是用运算符重载。运算符函数与一般函数基本无异,可以任意重载。标准库的设计者们早已经为我们定制了iostream::operator<<对于各种C++基本数据类型的重载版本,这才使得我们这些初学者们一上来就享受到cout<<”Hello,World!”<

class MyOutstream
{
    public:
    const MyOutstream& operator << (intvalue)const;//对整型变量的重载
    const MyOutstream& operator << (char*str)const;//对字符串型的重载
};
const MyOutstream& MyOutstream::operator<<(intvalue)const
{
    printf("%d",value);
    return* this;//注意这个返回……
}
    const MyOutstream& MyOutstream::operator << (char* str)const
{
    printf("%s",str);
    return* this;//同样,这里也留意一下……
}
MyOutstream myout;//随时随地为我们服务的全局对象myout
int main()
{
    int a=2003;
    char* myStr="Hello,World!";
    myout << myStr << "\n";
    return 0;
}

参考:
http://baike.baidu.com/view/1261354.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值