C++比C多了什么。。。(基础篇)

       C++就是在C的基础上加了很多东西。有C基础,学C++就不是难事;有java基础,学C++就非常好理解;同时有C和java基础......学C++那就是一天的事。但是学精就不是说说这么简单了,什么都怕专业嘛~ 

    这篇博客旨在整理(有C基础的前提下)学习C++要注意的知识。希望对大家有所帮助。

 

一、程序基础

    1、c++的头文件就不一样,它是#include<iostream>。还要有命名空间,为using namespace std;  std为标准流的命名空间,没这句cout、cin就用不了。

 

    2、变量可以以下划线开头,但通常多用作外部连接。标点和符号都不可以出现在标识中。数字不可以开头。大小写敏感。

 

    3、bool类型是C语言所没有的。wchar_t是宽字符,存储两个字节的字符。

 

    4、变量默认为signed,若要声明无符号变量可以声明,如: unsigned int num

 

    5、输入:cin >>str  只能读取一个单词,一旦碰到任何空格,读取操作就会停止。想要输入一行可以调用 getline(cin,str) 或  cin.getline(buff,SIZE) 。str为string类型,buff 为字符数组长度为SIZE。

 

    6、输出: cout << "Hello, I am " << age << " years old and my name is " << name<<endl; 换行为endl  

 

二、函数

 

    1、函数传地址 void swap(int& a, int& b) 调用时swap(a,b)即可交换

 

    2、有默认参数的函数 int abc (int a, int b=2) 调用时可以写abc(a),则b为2。也可以写abc(a,b)

 

    3、函数的重载 int divide (int a, int b) 与 float divide (float a, float b) 即为函数的重载,变量类型不同,调用函数不同。

 

    4、内联函数 在函数前面加上inline。相当于宏定义,编译时替换代码

 

三、类和对象

 

    1、类(class)是一种将数据和函数组织在同一个结构里的逻辑方法。定义类的关键字为class ,其功能与C语言中的struct类似,不同之处是class可以包含函数,而不像struct只能包含数据元素。如果我们在定义一个class成员的时候没有声明其允许范围,这些成员将被默认为private范围。

 

    2、成员函数的实现:范围操作符 (::) 声明了被定义的成员所属的class名称。如 void myClass::set_values (int a, int b)

 

    3、构造函数  它可以通过声明一个与class同名的函数来定义。当且仅当声明一个新的对象,或给该class的一个对象分配内存的时候,这个构造函数将自动被调用。构造函数的原型和实现中都没有返回值(return value),也没有void 类型声明。析构函数必须与class同名,加水波号tilde (~) 前缀,必须无返回值。如:~myClass();

 

    4、指向函数的指针,对象的声明,变量的声明

#include<iostream>
using namespace std;
class gaga{
public :
    gaga(){
        cout<<"heihei"<<endl;
    }
};

class haha{
public :
    gaga a;
    haha(){
        cout<<"haha"<<endl;
    }
};
int main(){
    gaga g;
    cout<<"------------"<<endl;
    gaga *p =new gaga();
    cout<<"------------"<<endl;
    haha ha;
}

运行输出为:

[fsy@localhost cpp]$ ./TestConstruct 
heihei
------------
heihei
------------
heihei
haha
[fsy@localhost cpp]$

 

    5、操作符重载

#include<iostream>
using namespace std;

class A{
    int a;
public:
    A(int t){a=t;}
    A operator + (A);
    int display(){return a;}
};

A A::operator + (A t){
    A temp(0);
    temp.a=a+t.a;
    return temp;
};

int main(){
    A a(3);
    A *b = new A(4);
    a=a+*b;
    cout<<a.display()<<endl;
} 

               运行输出为: 7

 

      6、关键字this  通常被用在一个class内部,指正在被执行的该class的对象(object)在内存中的地址。它是一个指针,其值永远是自身对象的地址

 

    7、静态变量static 是class的静态数据成员。它们的内容不依赖于某个对象,对同一个class的所有对象具有相同的值。

 

    8、友元函数、友元类 通过添加带有friend修饰的函数声明,可以允许一个外部函数获得访问class的protected 和 private 成员的能力。个人不太喜欢,破坏了封装性。友元类用法一样

 

    9、继承  子类继承父类的public 和 protected。写法 class B :public A{...}; 其中public表示继承类型保持不变。protected则将所有属性改为protected。

 

   10、子类不能访问父类的private。不能继承父类的构造函数和析构函数、 operator=() 成员 和 friends 。构造顺序是 父类->子类。析构顺序是 子类->父类。

 

    11、多继承 一个类可以有多个父类写法为class A:public B,public C

 

    12、多态 父类指针指向一个子类对象,可以调用子类的重写的虚方法。

#include<iostream>
using namespace std;

class A{
    int a;
public:
    int fun(){return 1;}
    virtual int foo(){ return 2;}
    //virtual int foo()=0; //这么写为纯虚函数,类为虚基类。不可以声明虚基类类的对象
};

class B :public A{
public :
    int fun(){ return 3;}
    int foo(){ return 4;}
};

int main(){
    A *p = new A();
    A *q = new B();
    cout<<p->fun()<<endl;
    cout<<p->foo()<<endl;
    cout<<q->fun()<<endl;
    cout<<q->foo()<<endl;
}


 运行输出结果为:1  2  1  4

 

 

 

  • 12
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值