第八天2017/04/17(3、C++的几个语法)

来源:互联网 发布:济南js复合保温模板 编辑:程序博客网 时间:2024/06/05 14:49

1、
必须用成员初始化列表的三种形式:
const成员
引用成员
C++编译器不知道如何构造某个类

#include <iostream>using namespace std;class A{public:    A(int a)    {        this->a = a;    }    void print_A()    {        cout<<a<<"+";    }private:    int a;};class B{public:    B(int a1,int a2,int ff,int& gg,int b):aa1(a1),aa2(a2),f(ff),g(gg)    {        this->b = b;    }    void print_B()    {        aa1.print_A();        aa2.print_A();        cout<<f<<"+"<<g<<"+"<<b<<endl;    }private://1.const成员属性    const int  f;//2.引用成员属性    int& g;//3.C++编译器不知道如何构造某个类    A aa1;    A aa2;//普通成员属性    int b;};int main(){    int a = 4;    B bb(1,2,3,a,5);    bb.print_B();}

2、new、delete与malloc、free的根本区别:是否调用构造、析构函数。
3、static关键字

【C语言中的static//main.c文件#include "stdio.h"void f1(){    static int a = 0;//1.a只初始化一次,且会保留上次的值    a++;}static void f2()  //2.f2()这个函数只能在这个.c中使用,也不能用extern扩展{}================================================================【C++语言中的static#include <iostream>using namespace std;class A{public:    A(int b = 0)    {        this->b = b;        count++;  //每创建一个对象就a++    }    static void show()  //静态函数    {        //cout<<b<<endl; //注:静态函数不能访问非静态变量        cout<<c<<endl;         cout<<"对象个数count = "<<count<<endl;    }    ~A()    {        count--;//每析构一个对象就a--    }private:    static int count;  //共享性:static变量属于A类,而不是A类的某一个对象    int b; //非static变量    static const int c = 0; //注:const static变量,可以在类内进行初始化};int A::count = 0;  //注:static变量的初始化格式int main(){    A a,b,c,d;//注:static函数的调用形式    A::show();    c.show();  //a.show();  d.show();  b.show();}//注:静态成员函数不包含指向当前对象的this指针。

4、很多对象共用一个函数,请问:函数是怎么区分具体的对象的呢?
这里写图片描述
答:C++的类的普通成员函数都隐式的包含一个指向当前对象的this指针。

1 0
原创粉丝点击